ВУЗ:
Составители:
27
Клиент Microsoft Excel с механизмом раннего связывания
Усовершенствуем предложенным способом разработанный ранее генера-
тор отчетов в книге Microsoft Excel. Начнем с того, что изучим библиотеку ти-
пов, поставляемую в файле excel9.olb, сначала в редакторе библиотек, а за-
тем – импортируем ее в состав проекта клиентского приложения. Все действия
при этом аналогичны только что описанным. Заменим приведенным ниже
фрагментом код отклика на событие запуска генератора, а затем рассмотрим
особенности программирования по сравнению с методом доступа через
Variant:
procedure TForm1.Button1Click(Sender: Tobject);
var Exl:_Application; Book:_WorkBook; Sheet:_WorkSheet;
i,j: Integer; Arr: Variant;
begin
with Table1 do begin
DatabaseName:='DBDEMOS'; TableName:='country.db'; Open
end;
try // если Excel запущен – подключиться к нему
Exl := GetActiveOleObject(
ClassIDToProgID(CLASS_ExcelApplication))
as _Application;
except // если нет – запустить
Exl:=CoExcelApplication.Create;
end;
Exl.Visible[0]:=True;
Book := Exl.WorkBooks.Add(EmptyParam,0);
Sheet := Book.ActiveSheet as _WorkSheet;
Sheet.Range['A1',EmptyParam].Value := 'Hello, World!';
Sheet.Range['A2',EmptyParam].Value := ' №';
j:=0;
for i:=0 to Table1.FieldCount-1 do
Sheet.Cells.Item[2,i+2].Value :=
Table1.Fields.Fields[i].FieldName;
Arr := VarArrayCreate([0,Table1.FieldCount],varVariant);
with Table1 do while not Eof do begin
j:=j+1;
Arr[0] := IntToStr(j);
for i:=0 to FieldCount-1 do
Arr[i+1] := Fields.Fields[i].AsString;
Sheet.Range['A'+IntToStr(j+2),
Chr(Ord('A')+FieldCount)+IntToStr(j+2)].Value := Arr;
Next
end;
Table1.Close
end;
Итак , соединение с сервером реализовано так же, как и сервером Word.
Но вызывает удивление то, что свойство Visible является векторным. Дейст-
вительно, при изучении библиотеки типов можно обратить внимание на то, что
27 Клиент Microsoft Excel с механизмом раннего связывания Усовершенствуем предложенным способом разработанный ранее генера- тор отчетов в книге Microsoft Excel. Начнем с того, что изучим библиотеку ти- пов, поставляемую в файле excel9.olb , сначала в редакторе библиотек, а за- тем – импортируем ее в состав проекта клиентского приложения. Все действия при этом аналогичны только что описанным. Заменим приведенным ниже фрагментом код отклика на событие запуска генератора, а затем рассмотрим особенности программирования по сравнению с методом доступа через Variant : procedure TForm1.Button1Click(Sender: Tobject); var Exl:_Application; Book:_WorkBook; Sheet:_WorkSheet; i,j: Integer; Arr: Variant; begin with Table1 do begin DatabaseName:='DBDEMOS'; TableName:='country.db'; Open end; try // если Excel запущен – подключиться к нему Exl := GetActiveOleObject( ClassIDToProgID(CLASS_ExcelApplication)) as _Application; except // если нет – запустить Exl:=CoExcelApplication.Create; end; Exl.Visible[0]:=True; Book := Exl.WorkBooks.Add(EmptyParam,0); Sheet := Book.ActiveSheet as _WorkSheet; Sheet.Range['A1',EmptyParam].Value := 'Hello, World!'; Sheet.Range['A2',EmptyParam].Value := ' №'; j:=0; for i:=0 to Table1.FieldCount-1 do Sheet.Cells.Item[2,i+2].Value := Table1.Fields.Fields[i].FieldName; Arr := VarArrayCreate([0,Table1.FieldCount],varVariant); with Table1 do while not Eof do begin j:=j+1; Arr[0] := IntToStr(j); for i:=0 to FieldCount-1 do Arr[i+1] := Fields.Fields[i].AsString; Sheet.Range['A'+IntToStr(j+2), Chr(Ord('A')+FieldCount)+IntToStr(j+2)].Value := Arr; Next end; Table1.Close end; Итак, соединение с сервером реализовано так же, как и сервером Word. Но вызывает удивление то, что свойство Visible является векторным. Дейст- вительно, при изучении библиотеки типов можно обратить внимание на то, что
Страницы
- « первая
- ‹ предыдущая
- …
- 25
- 26
- 27
- 28
- 29
- …
- следующая ›
- последняя »