Мы рассмотрели в разд. 6.4.2 основные операции, связанные с книгами. Теперь перейдем к операциям с листами книги. Коллекция листов содержится в свойстве Worksheets объекта книги. Эта коллекция по своим свойствам подобна рассмотренной ранее коллекции Workbooks. К листу можно обращаться по индексу или по имени. Например, следующие операторы при работе с серверами СОМ открывают и активизируют первый лист книги, представленной объектом Excel Workbook 1, передают указатель на этот лист в переменную Excel Worksheet 1 и активизируют лист, т.е. выдвигают его на первый план в окне Excel:

ExcelWorksheetl := ExcelWorkbookl.Worksheets[1] as ExcelWorksheet;
ExcelWorksheetl.Activate(LOCALE_USER_DEFAULT);

При работе с серверами автоматизации OLE аналогичные операторы выглядят так:

ExcelWorksheetl := ExcelWorkbookl.Worksheets[1];
ExcelWorksheetl.Activate;

Свойство Worksheets имеется также в объекте сервера. Это свойство относится к активной книге. Так что следующие операторы при работе с серверами СОМ производят операции с активной книгой, открывая и активизируя в ней лист, имя которого (например, "Лист1") задано в окне редактирования Editl:

ExcelWorksheetl := ExcelApplicationl.

Worksheets[Editl.Text] as ExcelWorksheet;
ExcelWorksheetl.Activate(LOCALE USER DEFAULT);

При работе с серверами автоматизации OLE аналогичные операторы выглядят так:

ExcelWorksheetl := ExcelApplicationl.Worksheets[Editl.Text];
ExcelWorksheetl.Activate;

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

try

ExcelWorksheetl := ExcelApplicationl.

Worksheets[Editl.Text] as ExcelWorksheet; ExcelWorksheetl.Activate(LOCALE_USER_DEFAULT); except

ShowMessage('He удалось открыть лист "' + Editl.Text + '"');
end;

Добавить новый лист в книгу можно методом Add объекта Worksheets:

function Add(Before: OleVariant;
After: OleVariant;
Count: OleVariant;
Type_: OleVariant;
lcid: Integer): IDispatch;

Параметры Before или After - это объект листа, перед которым или после которого осуществляется вставка. Обычно достаточно задать только один из этих параметров, а другой сделать равным EmptyParam. Если оба параметра равны EmptyParam, то новые листы вставляются перед текущим активным листом. Параметр Count указывает число вставляемых листов. Если этот параметр равен EmptyParam, то вставляется один лист. Параметр Туре__ определяет тип вставки. При значении EmptyParam вставляется новый пустой лист.

Например, следующий код при работе с серверами СОМ вставляет один новый лист перед активным листом активной книги и передает указатель на него в переменную ExcelWorksheetl:

ExcelWorksheetl := ExcelApplicationl.Worksheets.Add( EmptyParam, EmptyParam, EmptyParam, EmptyParam, LOCALE_USER_DEFAULT) as ExcelWorksheet;

А следующий код вставляет два новых листа после третьего листа активной книги:

var After, Num: OleVariant;
After := ExcelApplicationl.Worksheets[3];
Num := 2;

ExcelWorksheetl := ExcelApplicationl.Worksheets.Add(

EmptyParam,After,Num,EmptyParam, LOCALE_USER_DEFAULT) as ExcelWorksheet;

При работе с серверами автоматизации OLE аналогичные операторы выглядят так:

ExcelWorksheetl := ExcelApplicationl.Worksheets.Add;

и

ExcelWorksheetl := ExcelApplicationl.Worksheets.Add(

After := ExcelApplicationl.Worksheets[3], Count := 2);

Имя вставленного или любого имеющегося листа можно изменить с помощью свойства Name. Например:

ExcelWorksheetl.Name := 'Счет-фактура'; Удалить лист из книги можно методом Delete:

ExcelWorksheetl.Delete(LOCALE_USER_DEFAULT);

Напечатать лист можно методом Printout, не отличающимся от аналогичного метода, описанного ранее для книги. Например, печать текущей страницы при работе с серверами СОМ может быть оформлена так:

ExcelWorksheetl := ExcelApplicationl.ActiveSheet as, ExcelWorksheet;
ExcelWorksheetl.Printout(EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, LOCALE_USER_DEFAULT);

При работе с серверами автоматизации OLE получается попроще:

ExcelWorksheetl := ExcelApplicationl.ActiveSheet;
ExcelWorksheetl.Printout;

Предварительный просмотр листа перед печатью можно осуществить методом PrintPreview:

procedure PrintPreview(EnableChanges: OleVariant;
leid: Integer);

Параметр EnableChanges указывает возможность внесения изменений при просмотре. Например, следующий оператор обеспечивает при работе с серверами СОМ предварительный просмотр активного листа книги:

(ExcelApplicationl.ActiveSheet as ExcelWorksheet).

PrintPreview (true, LOCALE_USER_DEFAULT) ;

Для серверов OLE аналогичный оператор имеет вид:

ExcelApplicationl.ActiveSheet;PrintPreview(true);

6.4.2 Работа с книгами Excel || Оглавление || 6.4.4 Работа с ячейками


Приемы программирования в Delphi на основе VCL



Новости за месяц

  • Сентябрь
    2020
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс