При работе с серверами OLE этот оператор кардинально сокращается и делается более понятным:

if SaveDialogl.Exécute then

ExcelApplicationl.ActiveWorkbook.SaveAs(

Filename := SaveDialogl.FileName, AccessMode := xlNoChange);

Закрыть все открытые в Excel книги можно методом Close, в который при работе с сервером СОМ передается единственный аргумент - LCID:

ExcelApplicationl.Workbooks.Close(LOCALE_USER_DEFAULT);

При работе с сервером OLE аргумент не задается:

ExcelApplicationl.Workbooks.Close;

Закрыть конкретную книгу можно одноименным методом Close, но примененным к книге. Этот метод объявлен следующим образом:

procédure Close (SaveChanges: OleVariant;
Filename: OleVariant;
RouteWorkbook: OleVariant;
lcid: Integer);

Параметр SaveChanges указывает, что должно происходить, если в закрываемой книге сделаны какие-то изменения и они еще не сохранены. Если SaveChanges = true, то изменения сохраняются в файле, имя которого указано в параметре Filename. Если при этом параметр Filename не указан (равен EmptyParam), то пользователю предлагается указать имя файла. Если SaveChanges = false, то изменения не сохраняются, независимо от значения Filename. А если SaveChanges = EmptyParam, то пользователю предлагается вопрос, надо ли сохранять изменения в файле. Правда, все это следует из документации. А на практике многие версии Excel при SaveChanges = false работают так же, как при SaveChanges = EmptyParam, т.е. задают вопрос о необходимости сохранения данных.

Параметр RouteWorkbook используется в тех случаях, когда книга предназначена для пересылки какому-то адресату. В обычных случаях этот параметр может быть задан равным EmptyParam.

Например, оператор

ExcelApplicationl.Workbooks[1].Close(EmptyParam, EmptyParam, EmptyParam, LOCALE_USER_DEFAULT);

закрывает первую книгу сервера СОМ, а если в ней есть несохраненные изменения, то пользователю задается вопрос об их сохранении. Аналогичный оператор для сервера автоматизации OLE проще:

ExcelApplicationl.Workbooks[1].Close;

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

var i: integer;

for i:=l to ExcelApplicationl.Workbooks.Count do

ExcelApplicationl.Workbooks[1].Close(EmptyParam, EmptyParam, EmptyParam, LOCALE_USER_DEFAULT);

Этот код делает то же самое, что приведенный ранее оператор

ExcelApplicationl.Workbooks.Close(LOCALE_USER_DEFAULT);

Так что приведен данный пример только для того, чтобы показать организацию цикла по книгам. Обратите внимание на то, что индекс книги все время равен 1. Дело в том, что удаление первой книги приводит к переупорядочиванию индексов и первой становится та книга, которая ранее была второй.

Напечатать всю книгу или ее отдельные листы можно методом PrintOut. Объявление этого метода несколько различается для разных версий Microsoft Office:

в файле Ехсе197:

procedure Printout(From: OleVariant;
To_: OleVariant;
Copies: OleVariant;
Preview: OleVariant;
ActivePrinter: OleVariant;
PrintToFile: OleVariant;
Collate: OleVariant;
leid: Integer);

в файлах Excel2000 и ExcelXP:

procedure Printout(From: OleVariant;
To_: OleVariant;
Copies: OleVariant;
Preview: OleVariant;
ActivePrinter: OleVariant;
PrintToFile: OleVariant;
Collate: OleVariant;
PrToFileName: OleVariant;
Icid: Integer);

Параметр From указывает номер страницы, с которой начинается печать. Если этот параметр равен EmptyParam, то печатаются страницы, начиная с первой. Параметр То_ указывает номер последней печатаемой страницы. Если этот параметр равен EmptyParam, то последней печатаемой страницей является последняя страница книги. Параметр Copies определяет число копий (по умолчанию 1). Параметр Preview указывает, должно ли перед печатью открываться окно предварительного просмотра (при значении false или EmptyParam - не должно). Параметр ActivePrinter может задавать имя принтера (по умолчанию - текущий принтер). Параметр PrintToFile указывает, должна ли печать осуществляться в файл. При значении false или EmptyParam - не должна. При значении true параметр PrToFileName указывает имя файла. Если при этом параметр PrToFileName = EmptyParam, пользователю задается вопрос об имени файла. Параметр Collate указывает, надо ли напечатанные страницы разбирать по копиям (при значении false или EmptyParam - не надо). Параметр leid задается равным LO-CALE_USER_DEFAULT.

Часто все параметры, кроме leid, можно задавать равными EmptyParam.

6.4 Сервер Excel || Оглавление || 6.4.3 Работа с листами книги Excel


⇐ Предыдущая страница|

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



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

  • Май
    2020
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс