Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лабы / ИТСлаб6.doc
Скачиваний:
30
Добавлен:
16.04.2013
Размер:
74.24 Кб
Скачать

Позднее связывание с сервером автоматизации Excel

Для работы с табличным процессором Excel предусмотрены объекты автоматизации Application, WorkBooks (рабочие книги), Sheets (листы рабочей книги), WorkSheets (рабочие листы), Charts (диаграммы), которые образуют иерархию, отражающую подчиненность открытых рабочих книг приложению, вхождение листов в рабочую книгу и разделение листов рабочей книги на рабочие листы и диаграммы. Рассмотрим на примерах способы управления этими объектами с помощью предусмотренных для них методов.

С объектом автоматизации Application связан строковый идентификатор “Excel.Application. Следующий фрагмент программы устанавливает указатель XL на интерфейс объекта автоматизации Application, запускает сервер автоматизации Excel, устанавливает свойство Visible объекта автоматизации Application равным True для отображения окна табличного процессора на экране, методом Add объекта WorkBooks создает новую рабочую книгу WorkBook, методом Add объекта WorkSheets создает новый рабочий лист, затем устанавливает ссылку Sheet на 1-й рабочий лист рабочей книги WorkBook и организует вычисление логарифмической функции для аргумента, равного 1, в ячейке с адресом В2.

Variant XL, WorkBook, Sheet;

AnsiString result;

XL = CreateOleObject("Excel.Application");

XL.OlePropertySet("Visible",true);

WorkBook = XL.OlePropertyGet("WorkBooks").OleFunction("Add");

WorkBook.OlePropertyGet("WorkSheets").OleFunction("Add");

Sheet = WorkBook.OlePropertyGet("WorkSheets",1);

// в ячейку B1 записать формулу

Sheet.OlePropertyGet("Cells",1,2).OlePropertySet("Formula","=Log(1)");

// взять значение из ячейки B1

result = Sheet.OlePropertyGet("Cells",1,2).OlePropertyGet("Value");

ShowMessage("Результат = "+result);

XL.OlePropertySet("DisplayAlerts",false);

XL.OleProcedure("Quit");

XL = Unassigned; // устранить ссылку на объект автоматизации

Для работы с ячейками рабочего листа используется его свойство Cells, представляющее собой матрицу, каждая ячейка которой идентифицируется номером строки и номером столбца. Содержимое ячейки может быть рассматривать как формулу или значение в зависимости от того, какое свойство ячейки используется - Formula или Value.

Свойство DisplayAlerts объекта автоматизацииApplicationпредназначено для разрешения (True) или запрета (False) серверу автоматизацииExcelвыводить предупреждающие сообщения.

Метод Quitобъекта автоматизацииApplicationзавершает работу сервера автоматизацииExcel. После завершения работы сервера автоматизацииExcelуказатель на его интерфейс должен получить значениеUnassigned, чтобыустранить ссылку на объект автоматизации.

Для определения количества открытых рабочих книг и числа листов в рабочей книге предназначено свойство Count, имеющееся у соответствующих объектов автоматизации:

XL.OlePropertyGet("Workbooks").OlePropertyGet("Count") - количество открытых рабочих книг;

XL.OlePropertyGet("Workbooks",i).OlePropertyGet("Sheets").OlePropertyGet("Count") -общеечислолистоввi-йрабочейкниге;

XL.OlePropertyGet("Workbooks",i).OlePropertyGet("WorkSheets").OlePropertyGet("Count") -числорабочихлистоввi-йрабочейкниге;

XL.OlePropertyGet("Workbooks",i).OlePropertyGet("Charts").OlePropertyGet("Count") -числодиаграммвi-йрабочейкниге.

Имена рабочей книги и листа в рабочей книге хранятся в свойстве Name соответствующего объекта автоматизации:

XL.OlePropertyGet("Workbooks",i).OlePropertyGet("Name") -имяi-йрабочейкниги;

XL.OlePropertyGet("Workbooks",i).OlePropertyGet("Sheets",j).OlePropertyGet("Name") -имяj-голиставi-йрабочейкниге;

XL.OlePropertyGet("Workbooks",i).OlePropertyGet("WorkSheets",j).OlePropertyGet("Name") -имяj-горабочеголиставi-йрабочейкниге;

XL.OlePropertyGet("Workbooks",i).OlePropertyGet("Charts",j).OlePropertyGet("Name") -имяj-йдиаграммывi-йрабочейкниге;

Для ссылки на рабочие книги и листы вместо их номеров можно указывать имеющиеся у них имена, например:

XL.OlePropertyGet("Workbooks","Книга2").OlePropertyGet("WorkSheets","Лист3").OlePropertyGet("Cells",4,2) - ячейка В4 рабочего листа Лист3 в рабочей книге Книга2.

Выбор конкретной открытой книги, которая указывается номером или именем s, осуществ-ляется методом Activate: XL.OlePropertyGet("WorkBooks",s).OleProcedure("Activate").

После выбора книги она становится активной, и на нее можно ссылаться как на объект ActiveWorkBook.

Выбор листа в активной рабочей книге, указанного номером или именем s, также осуществ-ляется методом Activate, который имеется у листа: XL.OlePropertyGet("ActiveWorkBook"). OlePropertyGet("Sheets",s).OleProcedure("Activate").

Соседние файлы в папке лабы