Руководство по написанию макросов и приложений электронных таблиц Марк Александр Бейн



Pdf просмотр
страница4/9
Дата21.11.2016
Размер4.07 Mb.
Просмотров2616
Скачиваний0
ТипРуководство
1   2   3   4   5   6   7   8   9
Глава 5. Форматирование
электронных таблиц
Корора перестала смотреть на свой экран, а вместо этого, уставился на Пигосселиса.
“Что вы имеете в виду, когда говорите, что она выглядит неправильно?” — потребовала она,
— “Данные правильные. Вы знаете это, так!”
“Да, я знаю, что данные правильны,” — сказал он, — “но это форматирование. Не имеет значения, насколько надежна исходная информация, она не будет воспринята если она выглядит неправильно, и люди не могут прочитать ее.”
“Но у нас нет времени.” — сказала Корора, — “Они могут быть уже на пути сюда.”
“Не волнуйтесь,” — ответил он, — “мы заставим макрос сделать всю работу за нас.”
И Вы знаете, конечно, что Пигосселис сформулировал здесь несколько важных моментов:

Формат печатного сообщения может быть столь же важным как фактическое содержание; то, что Вы не можете прочитать, Вы не можете понять.

Если придется выполнить большой объем форматирования, то намного быстрее возложить на макрос форматирование электронных таблиц для нас вместо того, чтобы делать все это вручную.
Таким образом, в конце этой главы вы должны иметь возможность использовать макросы для:

Изменения внешнего вида рабочего листа;

Изменения внешнего вида ячеек и диапазонов ячеек;

Автоматически обновлять информацию в документе;

Подготовить документ таким образом, чтобы он был готов к печати.
Мы заставим макрос автоматически делать все, что Вы обычно должны делать, чтобы получить электронную таблицу, готовую к печати, и мы просто заставим ячейки соответствовать данным, которые они содержат.
Самое основное форматирование — размеры столбца и
строки
Я уверен, что Вы часто помещали информацию в ячейку и обнаруживали, что столбец имеет недостаточную ширину:
oCell
= oSheet getCellByPosition
(
0
,
0
)
oCell
String
= date oCell
= oSheet getCellByPosition
(
0
,
1
)
oCell
String
=
"Investigator Name"
oCell
= oSheet getCellByPosition
(
1
,
1
)
oCell
String
=
"Pygoscelis P.Ellsworthy"
oCell
= oSheet getCellByPosition
(
2
,
1
)
oCell
String
=
"Client Email Address"
oCell
= oSheet getCellByPosition
(
3
,
1
)
oCell
String
=
"ellworthyp@penguinpi.com"
Вы получите подобный скриншот; конечно, Вы можете выделить каждую ячейку, чтобы увидеть, что в действительности она содержит
- 59 -

Глава 5. Форматирование электронных таблиц
Однако, когда Вам приходится напечатать электронную таблицу, то вы в итоге получаете бессмысленную абракадабру:
Очевидно мы должны заставить макрос изменить ширину ячеек, чтобы она соответствовала содержимому. Звучит сложно? Нет, это не может быть проще.
Оптимизация ширины столбца
Оптимизация ширины отдельного столбца не может быть проще:
oSheet
Columns
(
0
).
OptimalWidth
=
True oSheet
Columns
(
1
).
OptimalWidth
=
True oSheet
Columns
(
2
).
OptimalWidth
=
True oSheet
Columns
(
3
).
OptimalWidth
=
True oSheet
Columns
(
4
).
OptimalWidth
=
True
Теперь (как только Вы запустили макрос) все прекрасно соответствует:
И распечатанный документ также становится понятным:
На этой стадии Вы вероятно думаете, что это полезно, однако это несколько длинное решение. Вы же не хотите добавлять по строке кода для каждого столбца, в который вы собираетесь поместить данные. И, конечно, Вы не должны делать этого — простой цикл сделает эту работу за Вас:
For c
= 0 To 3
oSheet
Columns
(
c
).
OptimalWidth
=
True
Next c
Однако, что, если Вы не знаете, сколько столбцов Вы собираетесь использовать или число столбцов в действительности может быть переменным? В этом случае, Вы нуждаетеся в способе оптимизации ширины каждого столбца на рабочем листе.
Оптимизация ширины столбцов по всему рабочему листу
Мы только что увидели, как оптимизировать ширину отдельных столбцов, но Вы можете найти более практичным оптимизацию всех столбцов одновременно:
oSheet getColumns
OptimalWidth
=
True
На сей раз Вы увидите, что все столбцы, содержащие данные станут оптимальной ширины.
И, как вы, вероятно, догадались, то, что вы можете сделать для столбцов, вы можете сделать
- 60 -

Самое основное форматирование — размеры столбца и строки
для строк (за исключением того, конечно, что вы будете использовать
OptimalHeight вместо
OptimalWidth
).
Задание фиксированной ширины и высоты
Наконец вы можете решить, что хотите использовать задание ширины каждого столбца, а не просто использовать ширину непосредственно текста. Опять же, это легко сделать:
oSheet
Columns
(
0
).
width
=
10000
В настоящий момент 10000 может показаться очень широко для столбца, но не тогда, когда вы учитываете, что она на самом деле измеряется в 100-х долях миллиметра; таким же образом 10000 на самом деле 100мм или 10 см.
Вы можете, как предпологается, задать высоту строки так же:
oSheet
Rows
(
0
).
height
=
1
Мы увидели самые основные (и важнейшие) варианты форматирования, которые вам когда- нибудь понадобятся — получение Вашей информации безупречно размещенной в ячейках рабочего листа.
Скрытие столбцов
Довольно часто имеются столбцы, которые вы хотите скрыть (например, содержащие формулы или, возможно, промежуточные шаги от одного столбца к другому). Скрытие столбца (или строки) — лишь вопросом выключения свойства isVisible
:
oSheet
Columns
(
4
).
isVisible
=
False
Далее просто убедитесь, что страница выглядит хорошо, когда Вы ее печатаете.
Форматирование печатаемой страницы
Вы можете решить, что вы не нуждаетесь в большем чем основное форматирование, которое мы рассматривали до сих пор. Если это так, то вам просто нужно напечатать, и поэтому мы рассмотрим несколько простых ситуаций, в которых макрос может помочь Вам.
Добавление разрыва страницы
Перед распечаткой вашего документа Вы можете решить, что разрывы страницы по умолчанию находятся в не совсем правильных местах. Например, один из них мог разбить данные, которые Вы хотите держаться вместе. Простая строка кода позволит Вам добавить разрыв страницы точно там, где они Вам необходимы:
oSheet
Rows
(
1
).
IsStartOfNewPage
=
True
Можно сказать, где имеются разрывы страницы, найдя синие линии на рабочем листе:
Или, конечно, Вы можете всегда выполнить Файл | Предварительный просмотр страницы.
И не забывайте — Вы можете создать новые разрывы страницы в столбцах так же как и в строках.
Определение Области Печати
Мы видели, как добавить разрыв страницы, и, таким образом, Вы можете задаться вопросом, как напечатать только часть рабочего листа вместо всего. Если бы Вы редактировали электронную таблицу вручную, Вы создали бы область печати; и это не отличается в макросе:
- 61 -

Глава 5. Форматирование электронных таблиц
Dim oPrintArea
(
0
) as new com sun star table
CellRangeAddress oPrintArea
(
0
).
StartColumn
=
0
oPrintArea
(
0
).
StartRow
=
1
oPrintArea
(
0
).
EndColumn
=
3
oPrintArea
(
0
).
EndRow
=
1
oDoc
Sheets
(
0
).
setPrintAreas
(
oPrintArea
())
Конечный результат выполнения кода лучше всего виден, когда Вы непосредственно печатаете страницу (несмотря на то, что выбор Файл | Предварительный просмотр
страницы сэкономит ваши деньги). Однако, область, которая будет напечатана будет выделена на рабочем листе:
Приняв решение, что вы хотите печатать, вы можете подумать о том, как вы хотите распечатать.
Задание верхнего и нижнего колонтитулов
Вы уже знаете, что когда вы дойдете до печати документа Calc, то верхний и нижний колонтитулы добавляются для вас автоматически. По умолчанию они состоят из названия рабочего листа наверху страницы, и номера страницы внизу (обычно в формате “Страница n из nn”). Вы можете легко добавить свои собственные верхний и нижний колонтитулы, используя следующий код:
oPageStyles
= oDoc
StyleFamilies getByName
(
"PageStyles"
)
oDefault
= oPageStyles getByName
(
"Default"
)
oDefault
HeaderIsOn
=
True oHeader
= oDefault
RightPageHeaderContent oHeader
CenterText
String
=
"PPI Report"
oDefault
RightPageHeaderContent
= oHeader oDefault
FooterIsOn
=
True oFooter
= oDefault
RightPageFooterContent oFooter
CenterText
String
=
"-- CONFIDENTIAL --"
oDefault
RightPageFooterContent
= oFooter
На этот раз распечатка будет иметь:

PPI Report наверху в центре страницы;

— CONFIDENTIAL — внизу в центре страницы.
Если Вам интересно, почему мы просто переписали номер страницы (в конце концов, он является довольно полезным), ну, в общем, ответ прост: чтобы мы могли увидеть, каким образом вернуть его назад...
Добавление номеров страниц
Номер страницы и количество страниц — текстовые поля, которые могут быть назначены документу. Вы можете создать номер страницы, используя:
oPageNumber
= _
oDoc createInstance
(
"com.sun.star.text.TextField.PageNumber"
)
Вы можете добавить текстовое поле количества страниц таким же образом:
oPageCount
= _
oDoc createInstance
(
"com.sun.star.text.TextField.PageCount"
)
Однако, мы не можем добавить это непосредственно в нижний колонтитул (или верхний колонтитул, если именно это Вы предпочитаете). Вместо этого мы должны создать текстовый
- 62 -

Форматирование печатаемой страницы
курсор:
oTextCursor
= oFooter
RightText createTextCursor
Теперь мы можем создать текст для курсора, и затем добавить его в нижний колонтитул:
oTextCursor gotoEnd
(
False
)
oTextCursor
String
=
"Page "
oTextCursor gotoEnd
(
False
)
oFooter
RightText insertTextContent
(
oTextCursor
, oPageNumber
,
True
)
oTextCursor gotoEnd
(
False
)
oTextCursor
String
=
" of "
oTextCursor gotoEnd
(
False
)
oFooter
RightText insertTextContent
(
oTextCursor
, oPageCount
,
True
)
Помните, что это все должно предшествовать коду:
oDefault
RightPageFooterContent
= oFooter
Если Вы добавили код, запустили повторно макрос и взглянули на предварительный просмотр страницы, то Вы увидите:
Мы рассмотрели здесь только два из текстовых полей. В конце концов, номер страницы и количество страниц может быть достаточно для Вас. Однако, есть довольно много других полей, к которым Вы имеете доступ. Например, некоторые из них, которые Вы можете также найти полезными — Автор, Имя файла, URL, Отправитель и Количество слов.
Вы можете получить полный список из online документации OpenOffice.org на:
В любом случае, верхний или нижний колонтитулы Вы решили переделать, есть одна вещь, о которой Вы должны будете подумать — размер страницы, которую Вы хотите напечатать.
Задание размера страницы и ориентации
Скорее всего, Вы не захотите использовать параметры принтера по умолчанию, когда Вы приступите к печати вашей электронной таблицы. Если ваша система подобна моей, то по умолчанию используется формат Letter с портретной ориентацией, полезно, но я предпочитаю A4, а иногда я должен напечатать лист в альбомной ориентации. Если, как и я,
Вы хотите напечатать лист таким образом, то должны будете добавить следующий код:
oDefault
Width
=
21000
'A4 Width in mm oDefault
Height
=
29700
'A4 Height in mm
Dim oPrintOptions
(
0
) as new com sun star beans
PropertyValue oPrintOptions
(
0
).
Name
=
"PaperOrientation"
oPrintOptions
(
0
).
Value
= com sun star view
PaperOrientation
LANDSCAPE
odoc
Printer
= oPrintOptions
()
Как помните, мы уже определили oDefault как:
oPageStyles
= oDoc
StyleFamilies getByName
(
"PageStyles"
)
oDefault
= oPageStyles getByName
(
"Default"
)
Если Вы предпочитаете использовать иные размеры страницы, то Вам, возможно, придется рассмотреть выделение кода в подпрограмму:
Sub setPaperSize
( iDOc as Object, optional iPaper as String, _
optional iOrient as String)
Dim oPaperSize
(
5
,
2
)
Dim oPageStyles as Object
Dim oDefault as Object
Dim oPrintOptions
(
0
) as new com sun star beans
PropertyValue oPageStyles
= iDoc
StyleFamilies getByName
(
"PageStyles"
)
oDefault
= oPageStyles getByName
(
"Default"
)
- 63 -

Глава 5. Форматирование электронных таблиц
If
IsMissing
(
iPaper
) Then iPaper
=
"A4"
End If
If
IsMissing
(
iOrient
) Then iOrient
=
"PORTRAIT"
End If oPaperSize
(
"A4"
,
0
) =
21000
'Ширина в мм/100
oPaperSize
(
"A4"
,
1
) =
29700
'Высота в мм/100
oPaperSize
(
"A5"
,
0
) =
14800
oPaperSize
(
"A5"
,
1
) =
21000
oDefault
Width
= oPaperSize
(
iPaper
,
0
)
oDefault
Height
= oPaperSize
(
iPaper
,
1
)
oPrintOptions
(0).
Name
=
"PaperOrientation"
if iOrient
=
"PORTRAIT"
Then oPrintOptions
(
0
).
Value
= com sun star view
PaperOrientation
PORTRAIT
Else oPrintOptions
(
0
).
Value
= com sun star view
PaperOrientation
LANDSCAPE
End If idoc
Printer
= oPrintOptions
()
End sub
Однако, Вы можете решить, что хотите использовать все параметры по умолчанию при печати вашего документа. Это оставляет нам лишь одну проблему — имя листа.
Настройка имен рабочих листов
Дело не в том, что имена листов на самом деле являются проблемой; а в том, что, если Вы используете параметры печати по умолчанию, то имя рабочего листа будет напечатано наверху листа, а имена по умолчанию довольно упрощенные — Лист1, Лист2 и Лист3. Они на самом деле не говорят Вам что-либо о назначении рабочих листов? Конечно описательные имена, такие как “Счета Клиентов” или “Расписание Исследователя” намного более полезны
— только имена говорят вам, для чего предназначен тот или иной лист.
Таким образом, вместо того, чтобы изменять верхний и нижний колонтитулы на странице,
Вы вместо этого можете решить настроить имя рабочего листа. Мы будем использовать макрос для:

Изменения имени рабочего листа

Добавления дополнительных рабочих листов

Удаления любых рабочих листов, которые нам не нужны
Конечно, вы помните, как сделать это из Главы 4. Таким образом далее мы рассмотрим область, о которой слишком часто забывают — информация о документе.
Обновление информации о документе
Если вы подобны мне (и любой другой программист, которого я когда-либо встречал), то последняя вещь, о которой Вы будете когда-либо думать — информация о документе, и этим я подразумеваю Автора документа, Заголовок документа, Тему документа, Ключевые слова документа.
Признайтесь: Вы только хотите преуспеть и выполнить некоторое программирование, не так ли? Очевидный ответ заключается в том, чтобы позволить макросу сделать всю работу за
Вас, за счет использования сервиса
DocumentInfo
:
oDoc
DocumentInfo
Author
=
"Pygoscelis P. Ellsworthy"
oDoc
DocumentInfo
Title
=
"PPI Investigation"
- 64 -

Обновление информации о документе
oDoc
DocumentInfo
Subject
=
"PPI Macros to aid Investigation"
oDoc
DocumentInfo
Keywords
=
"PPI, Investigation, Macros"
oURL
= convertToUrl
(
"/home/bainm/bluek/ppi_investigation.ods"
)
oDoc storeAsUrl
(
oUrl
,
Array
())
oDoc
DocumentInfo
Description
=
"PPI Macros to aid Investigations"
_
& chr
(
10
) &
"Developed by Korora Blue and "
& oDoc
DocumentInfo
Author
_
& chr
(
10
) & chr
(10) &
"Created: "
_
& oDoc
DocumentInfo
CreationDate
Day
_
&
"/"
& oDoc
DocumentInfo
CreationDate
Month
_
&
"/"
& oDoc
DocumentInfo
CreationDate
Year
_
&
" "
& oDoc
DocumentInfo
CreationDate
Hours
_
&
":"
& oDoc
DocumentInfo
CreationDate
Minutes
_
& chr
(
10
) &
"Last updated: "
_
& oDoc
DocumentInfo
ModifyDate
Day
_
&
"/"
& oDoc
DocumentInfo
ModifyDate
Month
_
&
"/"
& oDoc
DocumentInfo
ModifyDate
Year
_
&
" "
& oDoc
DocumentInfo
ModifyDate
Hours
_
&
":"
& oDoc
DocumentInfo
ModifyDate
Minutes oCreated
= oDoc
DocumentInfo
CreationDate oModified
= oDoc
DocumentInfo
ModifyDate oDoc
DocumentInfo
Description
=
"PPI Macros to aid Investigations"
_
& chr
(
10
) &
"Developed by Korora Blue and "
& oDoc
DocumentInfo
Author
_
& chr
(
10
) & chr
(
10
) &
"Created: "
_
& oCreated
Day
&
"/"
& oCreated
Month
&
"/"
& oCreated
Year
_
&
" "
& oCreated
Hours
&
":"
& oCreated
Minutes
& chr
(
10
) _
&
"Last updated: "
_
& oModified
Day
&
"/"
& oModified
Month
&
"/"
& oModified
Year
_
&
" "
& oModified
Hours
&
":"
& oModified
Minutes
Чтобы увидеть, что код сделал для Вас, просто нажмите Файл | Свойства...:
Если Вы интересуетесь исследованием других полей информации о документе, то Вы можете найти полный список на:
До сих пор мы видели, как использовать макросы для:

Оптимизации ширины и высоты строк (и столбцов);
- 65 -

Глава 5. Форматирование электронных таблиц

Подготовки страницы к печати;

Обновления информации о документе.
Далее мы увидим, как использовать макрос для форматирования ячеек в пределах каждого рабочего листа.
Форматирование ячеек и диапазонов ячеек
Если Вы хотите отформатировать ячейку (или диапазон ячеек) вручную, то Вы выбираете ячейки мышью, а затем выбираете Формат | Ячейки...:
Вы можете предпочесть назначать стиль ячейке, на сей раз используя Формат | Стили и
форматирование (или нажав F11):
Мы, конечно, не хотим использовать эти методы; мы хотим, чтобы макрос сделал всю работу за нас.
Вы можете хотеть изменить отдельные параметры: например, начертание шрифта, размер шрифта, фон, или Вы можете хотеть добавить подчеркивание или любые другие из параметров форматирования, к которым Вы обычно получаете доступ через диалоговое окно
Формат ячеек. С другой стороны, Вы можете обнаружить, что легче просто применить встроенный стиль.
- 66 -

Форматирование ячеек и диапазонов ячеек
Изменение стиля ячеек
Вы можете выбрать любой из стилей, доступных для ваших электронных таблиц, и это может быть или один из встроенных стилей или это может быть один из ваших собственных, который Вы создали самостоятельно. Когда Вы решили, какой стиль использовать, метод
CellStyle сделает всю работу за Вас. Например, чтобы применить стиль Заголовок к целому ряду ячеек просто используйте следующий код:
oDoc
Sheets
(
0
).
Rows
(
0
).
CellStyle
=
"Заголовок"
Этот код, как вы, вероятно, можете догадаться, применяет стиль Заголовок к верхней строке первого рабочего листа. Вы можете, если хотите, применить стиль к одной ячейке:
oDoc
Sheets getByName
(
"PPI Client Invoice"
).
getCellRangeByName
(
"A1"
). _
CellStyle
=
"Заголовок"
Если эта строка кажется слишком большой, о вы можете разбить ее на на более управляемые куски:
oSheet
= oDoc
Sheets getByName
(
"PPI Client Invoice"
)
oCell
= oSheet getCellRangeByName
(
"A1"
)
oCell
CellStyle
=
"Заголовок"
Как только Вы применили стиль, который Вы хотите, Вы можете подумать о любых дополнительных форматах. Например, установив стиль Заголовок, Вы можете захотеть добавить подчеркивание. С другой стороны, Вы можете захотеть использовать форматы ячеек, чтобы создать ваши собственные стили.
Изменение формата ячеек
Если Вы посмотрите на диалоговое окно Формат ячеек, то Вы будете уже знать, что есть множество вещей, которые Вы можете изменить. Например:

Шрифт

Гарнитура шрифта

Цвет

Рельеф

Выравнивание

Фон
Мы только взглянем на некоторые из них, чтобы получить общее представление.
Цвета фона ячейки
Один простой способ выделить ячейку состоит в изменении цвета фона. Все, что Вы должны сделать, просто использовать свойство
CellBackColor
, and присвоить ему число типа long
, представляющее красную, зеленую и синюю компоненты цвета. И как Вы получите соответствующее число? Вы можете использовать функцию
RGB
OOo, чтобы сделать жизнь немного легче:

RGB (255, 0, 0)
возвращает число типа long
, представляющее красный цвет;

RGB (255, 255, 0)
возвращает число типа long
, представляющее желтый цвет;

RGB (0, 255, 0)
возвращает число типа long
, представляющее зеленый цвет;

RGB (0, 255, 255)
возвращает число типа long
, представляющее голубой цвет;

RGB (0, 0, 255)
возвращает число типа long
, представляющее синий цвет;

RGB (255, 0, 255)
возвращает число типа long
, представляющее пурпурный цвет.
Таким образом, чтобы придать ячейке зеленый фон, Вы использовали бы:
- 67 -

Глава 5. Форматирование электронных таблиц
oCell
CellBackColor
=
RGB
(
0
,
255
,
0
)
Можете поэкспериментировать со всеми 16 777 216 возможными цветами.
Цвета Текста
Наряду с заданием цвета фона, Вы можете также задать цвет текста (или символов) color by используя свойство
CharColor
:
ocell
CharColor
=
RGB
(
255
,
0
,
0
)
Вы будете теперь иметь ячейку с хорошими красными буквами (или числами).
Шрифт ячейки
Как Вы ожидаете, шрифт очень легко изменить. Просто используйте свойство
CharFontName
Если, например, Вы хотите изменить шрифт всего рабочего листа, то Вы можете использовать код:
oSheet
CharFontName
=
"Courier"
Одна вещь, которую надо помнить, однако, то, что выбор шрифта изменит ширину ячейки, которая содержит текст. Таким образом, не забывайте устанавливать свойства
OptimalWidth и
OptimalHeight после того, как Вы установили имя шрифта.
Высота символов
Другой способ выделить ячейки состоит в том, чтобы изменить высоту символов. Как и во всех других вариантах форматирования, это может быть сделано на уровне листа, строки или столбца. В следующем примере мы изменяем высоту символов для целой строки:
oDoc
Sheets
(
0
).
Rows
(
0
).
CharHeight
=
10
Как и со шрифтом ячейки высота символа затрагивает ширину и высоту ячейки, и Вы, возможно, придется их изменить, чтобы корректно отображать содержимое ячейки.
Подчеркивание
Это может удивить Вас, но знайте, что на самом деле имеется 18 различных видов подчеркивания:
ID
Название
Константа OOo
0
нет com.sun.star.awt.FontUnderline.NONE
1
Обычное com.sun.star.awt.FontUnderline.SINGLE
2
Двойное com.sun.star.awt.FontUnderline.DOUBLE
3
Пунктир com.sun.star.awt.FontUnderline.DOTTED
4
Не известный com.sun.star.awt.FontUnderline.DONTKNOW
5
Штрих com.sun.star.awt.FontUnderline.DASH
6
Длинный штрих com.sun.star.awt.FontUnderline.LONGDASH
7
Штрихпунктир com.sun.star.awt.FontUnderline.DASHDOT
8
Штрихпунктир с 2-мя точками com.sun.star.awt.FontUnderline.DASHDOTDOT
9
Мелкая волна com.sun.star.awt.FontUnderline.SMALLWAVE
10
Волна com.sun.star.awt.FontUnderline.WAVE
11
Двойная волна com.sun.star.awt.FontUnderline.DOUBLEWAVE
12
Жирное com.sun.star.awt.FontUnderline.BOLD
13
Пунктир жирный com.sun.star.awt.FontUnderline.BOLDDOTTED
- 68 -

Форматирование ячеек и диапазонов ячеек
ID
Название
Константа OOo
14
Штрих жирный com.sun.star.awt.FontUnderline.BOLDDASH
15
Длинный штрих жирный com.sun.star.awt.FontUnderline.BOLDLONGDASH
16
Штрихпунктир жирный com.sun.star.awt.FontUnderline.BOLDDASHDOT
17
Штрихпунктир с 2-мя точками жирный com.sun.star.awt.FontUnderline.BOLDDASHDOTDOT
18
Волна жирная com.sun.star.awt.FontUnderline.BOLDWAVE
Все, что Вы должны сделать, это присвоить свойству
CharUnderline число, соответствующее подчеркиванию, которое Вы хотите использовать:
oCell
CharUnderline
=
18
Вы можете также использовать константы OOo для задания подчеркивания:
oCell
CharUnderline
= com sun star awt
FontUnderline
BOLDWAVE
Однако, из этих 18 типов подчеркиваний только 16 фактически делают что-либо:

Тип 0 — “нет”, то есть не подчеркивать.

Тип 4 определен как “Не известный” и это, оказывается, то же самое, что “нет”.
Перенос по словам
Мы обсудили тот факт, что мы можем изменить ширину ячейки с учетом содержимого или иметь фиксированное значение, в зависимости от внешнего вида, которого мы хотим достичь. Если Вы решаете использовать фиксированную ширину, то стоит рассмотреть задание свойству
IsTextWrapped значения
True
. Это будет гарантировать, что информация, помещенная в ячейку будет правильно отображаться, даже если введенные данные будут более широкими чем отображаемая ширина ячейки. Так, например, Вы можете попробовать:
oSheet
= oDoc
Sheets getByName
(
"PPI Client Invoice"
)
oCell
= oSheet getCellRangeByName
(
"A1"
)
oCell
String
=
"PPI Client Name"
ocell
IsTextWrapped
=
True
Результат в точности такой, как вы ожидаете:
Формат чисел
Смотря на форматирование символов в ячейке, Вы можете теперь задаться вопросом о форматировании чисел.
Как вы, вероятно, уже поняли, Вы просто должны присвоить свойству (
NumberFormat
) число, соответствующее формату числа. Однако, здесь могут быть проблемы:

ID для каждого формата числа может измениться в зависимости от вашей страны и языка.

Так как ID требуется для каждого формата числа, как Вы можете применить собственные форматы чисел к ячейке?
Не волнуйтесь, инструменты, которые Вам необходимы предоставляются как компоненты документа:
1. Чтобы определить ID формата числа используйте метод
NumberFormats.queryKey
2. Если необходимый формат числа не существует, то Вы можете создать новый,
- 69 -

Глава 5. Форматирование электронных таблиц
используя метод
NumberFormats.queryKey
Вы, вероятно, захотите задавать форматы чисел весьма регулярно, таким образом, лучше всего на этой стадии написать функцию, которая будет делать это без лишних сложностей:
Function getNumberFormat
(
iDoc as Object, iFormat as String, _
optional iLang as String, optional iCountry as String)
Dim oFormatId
As Long
Dim oLocale
As New com sun star lang
Locale
If
IsMissing
(
iLang
) Then iLang
=
"en"
End If
If
IsMissing
(
iCountry
) Then iCountry
=
"gb"
End If oLocale
Language
= iLang oLocale
Country
= iCountry oFormatId
= iDoc
NumberFormats queryKey
(
iFormat
, oLocale
,
True
)
If oFormatId
= -
1
Then oFormatId
= iDoc
NumberFormats addNew
(
iFormat
, oLocale
)
End If getNumberFormat
= oFormatId
End Function
Теперь задание форматов ячеек становится очень простым:
oCell
= oSheet getCellRangeByName
(
"A1"
)
oCell
Value
=
23400.3523565
oCell
= oSheet getCellRangeByName
(
"A2"
)
oCell
Value
=
23400.3523565
oCell
NumberFormat
= getNumberFormat
(
oDoc
,
"£#,##0.00"
)
oCell
= oSheet getCellRangeByName
(
"B2"
)
oCell
Value
= -
23400.3523565
oCell
NumberFormat
= getNumberFormat
(
oDoc
,
"£#,##0.00"
)
oCell
= oSheet getCellRangeByName
(
"A3"
)
oCell
Value
=
23400.3523565
oCell
NumberFormat
= _
getNumberFormat
(
oDoc
,
"£#,##0.00;[RED]-£#,##0.00"
)
oCell
= oSheet getCellRangeByName
(
"B3"
)
oCell
Value
= -
23400.3523565
oCell
NumberFormat
= _
getNumberFormat
(
oDoc
,
"£#,##0.00;[RED]-£#,##0.00"
)
Когда Вы запустите код, Вы сможете увидеть эффект назначения различных форматов чисел ячейкам:
Вы заметите, что форматирование для последних двух ячеек (A3 и B3) особенно полезно, потому что оно вводит цветовое кодирование, которое зависит от значения ячейки — отрицательные значения отображаются красным.
Online справочные данные
В этой главе мы охватили только небольшое количество доступных вариантов форматирования. Если Вы интересуетесь всеми возможностями, то Вы можете найти дополнительную информацию о свойствах ячейки на:
- 70 -

Online справочные данные
Вы найдете дополнительную информацию о свойствах символов на:
Резюме
В этой главе мы узнали о форматировании электронных таблиц и как настроить их внешний вид: рабочих листов, страниц перед печатью, информации о документе и ячеек.
Мы узнали, как оптимизировать ширину столбца, применить фиксированную ширину к нему, скрыть столбцы и строки рабочего листа. Мы также имели дело с добавлением разрывов страницы, созданием области печати, настройкой верхних и нижних колонтитулов, изменением типа и размера страницы, и так далее для страниц, которые должны быть напечатаны. Мы теперь знаем, как форматировать ячейки при помощи стиля, цвета фона, цвета текста, размера шрифта, подчеркивания и и многих других параметров форматирования.
Но вернемся к нашей истории...
Пигосселис наблюдал за Корора, как она читала только-что напечатанный лист бумаги.
“Но это не может быть правдой” — сказала она, — “Я просто не могу поверить, что это он.”
“Я извиняюсь” — сказал Пигосселис, — “но Вы видели данные — и мне это не нравится больше, чем Вам."
Он увидел ее пристальный взгляд на что-то позади него, ее испуганное выражение на лице.
Слишком поздно он понял, что она не смотрела на него, она смотрела через его плечо на что- то еще. Так как он повернулся, рукояткой пистолета его ударили в висок. Немедленно вызывающая отвращение черная яма открылась перед ним.
Когда он медленно пришел в себя, он узнал две вещи. Нечто теплое стекало вниз по краю его лица, и что он не мог двигаться. Его глаза были туманны, но он пробовал озираться.
“Корора?”
“Все в порядке. Я здесь” — произнес ее голос позади него — “я привязана к Вам.”
Так как его зрение прояснилось, он увидел разгром вокруг себя. Компьютеры были разбиты без какой-либо надежды на возможность их отремонтировать. А затем он узнал лицо, искоса смотрящее на него.
“Удивлены, Босс?” Сфен сидела на одном из столов, лениво играя пистолетом в своей руке.
Он усмехнулся.
“Небольшой беспорядка, не так ли? И весь ваш тяжелый труд превратился в дым. Диск и ваши распечатки находятся в там”. Она указала на дымящееся мусорное ведро. “Все, чего я ждала, чтобы Вы очнулись. Я хочу, чтобы Вы увидели приближающуюся пулю.”
Пигосселис рассмеялся.
“Что тут смешного?”
"Не имеет значения, что Вы теперь сделаете. Слишком поздно. Вся информация была загружена в базу данных. Убейте нас, и Вы потеряете все.”
Если Вам интересно узнать, каким образом Пигосселис добился этого, продолжим в Главе 6,
Работа с Базами данных.
- 71 -



Поделитесь с Вашими друзьями:
1   2   3   4   5   6   7   8   9


База данных защищена авторским правом ©nethash.ru 2019
обратиться к администрации

войти | регистрация
    Главная страница


загрузить материал