- •Разработка интегрированных прикладных программ
- •Введение
- •Интерфейсы в Delphi
- •Присоединение интерфейсов к формам
- •Объекты com
- •Контроллер позднего связывания (Delphi)
- •Контроллер на основе библиотеки типов (Delphi)
- •Контоллер на vba
- •Управление офисными приложениями
- •Ms Excel и компоненты библиотеки vcl
- •Работа с ячейками таблицы
- •Серверы ms Office и позднее связывание
- •Работа с серверами из Delphi (позднее связывание)
- •Элементы управления ActiveX
- •Создание ActiveX на основе компонентов vcl
- •Тестирование ActiveX
- •Тестирование с использованием vba
- •Создание активных форм
- •Добавление свойств и методов
- •Динамическое создание элементов управления ActiveX
- •Компонент oleContainer
- •Создание и сохранение нового объекта (внедрение)
- •Создание связанного объекта
- •Работа с сервером
- •Библиографический список
- •Оглавление
Работа с ячейками таблицы
Одна из ячеек таблицы является активной и с ней можно работать отдельно. Например, можно записать значение:
ExcelApplication1->ActiveCell->set_Value((TVariant)"a");
В Excel ячейки таблицы рассматриваются как двумерный массив Cells(<номер строки>,<номер столбца>). Для получения доступа к этому массиву в Builder C++ используется метод get_Cells().
С помощью методов set_Item(<номер строки>, <номер столбца>, <значение>) и get_Item(<номер строки>, <номер столбца>) можно записывать и извлекать значения элементов с указанными индексами. Например:
// число 222 записывается в ячейку с номерами (1,1): ExcelWorksheet2 -> get_Cells()-> set_Item((TVariant)1,(TVariant)1,(TVariant)"222"); // для записи формулы используется функция: ExcelWorksheet2 -> get_Cells()-> set_Item((TVariant)5,(TVariant)1,(TVariant) "=СУММА(A1:A3"); // из ячейки (1,4) извлекается значение: k = (TVariant)ExcelWorksheet2 -> get_Cells()-> get_Item((TVariant)1,(TVariant)4);
Объект Range рабочего листа ExcelWorksheet предоставляет удобный доступ к таблице и позволяет работать с ячейкой таблицы, диапазоном ячеек, прямоугольной областью. Приведем примеры его использования:
// в ячейку B1 занести число 4: ExcelWorksheet1->get_Range((TVariant)"B1", (TVariant)"B1")->set_Value((TVariant)4); // в ячейки с3-с6 записать формулы: ExcelWorksheet2->get_Range((TVariant)"с3",(TVariant)"с6") -> set_Value((TVariant)"=a3+b3");
Когда формула присваивается диапазону ячеек, то переменные в формуле имеют относительные имена, поэтому в предыдущем примере в ячейку c4 будет вписана формула “=a4 +b4” и т.д.
// Получение значения из ячейки b5: TVariant y; y=ExcelWorksheet2->get_Range((TVariant)"b5", (TVariant)"b5") -> get_Value(); // Удаление содержимого диапазона ячеек: ExcelWorksheet2 -> get_Range ((TVariant)"D1",(TVariant)"D3") -> Clear(); // Копирование через буфер обмена: ExcelWorksheet2 -> get_Range ((TVariant)"A1",(TVariant)"B3") -> Copy(); ExcelWorksheet2 -> get_Range ((TVariant)"A7",(TVariant)"B9") -> Select(); ExcelWorksheet2 -> Paste();
При переходе от одного объекта Range к другому, например от одной ячейки к другой, отстоящей от первой на определенное расстояние, можно использовать смещение. Достигается это благодаря методу Offset объекта Range. Метод имеет два параметра: смещение по строкам и столбцам, и возвращает новый объект Range, отстоящий от прежнего на заданное расстояние.
Например, следующий оператор задает запись в ячейку, отстоящую от “b5” на (–1, 3), то есть в ячейку “e4”:
ExcelWorksheet2-> get_Range ((TVariant)"b5", (TVariant)"b5") -> get_Offset ((TVariant)-1,(TVariant)3) ->set_Value((TVariant)"=b5+d4");
Оформление ячеек таблицы можно выполнить так:
// выделение курсивом ExcelWorksheet2 -> get_Range ((TVariant)"A1", (TVariant)"E5")->get_Font()->set_Italic((TVariant)true); // выравнивание ExcelWorksheet2->get_Range ((TVariant)"D1", (TVariant) "E3")-> set_HorizontalAlignment((TVariant)xlCenter); // изменение цвета букв: ExcelWorksheet2 -> get_Range((TVariant)"D1", (TVariant) "E3")-> get_Font()-> set_Color((TVariant)0x00FF0000); // заливка цветом: ExcelWorksheet2 -> get_Range((TVariant)"A1",(TVariant) "B7")-> Interior-> set_Color((TVariant)RGB(0,128,200));
Работа с сервером Word организуется аналогичным образом. Среди основных компонент - WordApplication, WordDocument, WordFont и WordParagraphFormat. Примеры работы с ними можно найти в [1].