Советы по Delphi




Delphi и OLE Automation с Excel - часть 4


Приложение 2 – Использование в Delphi класса-оболочки

Предпочтительней использовать вызовы Автоматизации непосредственно из приложения, нижеприведенный пример демонстрирует технологию создания в Delphi класса-оболочки для использования объектов Excel в ваших приложениях. Это позволит вам иметь простой интерфейс к объектам, а также помочь с любыми изменениями объектных интерфейсов Excel в ее будущих версиях.

unit sheet;

interface

uses

EXCEL_TLB, windows, sysutils;

//-------------------------------------------------------------------------

type
tExcel = classprivatexla : _Application;xlw : _Workbook;LCID : integer;procedure fSetVisible(Visible : boolean);function fGetVisible : boolean;procedure fSetCell(Cell : string; Value : OLEVariant);function fGetCell(Cell : string) : OleVariant;publicconstructor create;destructor destroy; override;procedure AddWorkBook(Template : OleVariant);procedure SaveAs(filename : string);property Visible : booleanread fGetVisible write fSetVisible;property Cell[Cell : string] : OleVariantread fGetCell write fSetCell;end;
//-------------------------------------------------------------------------

Procedure CreateSpreadsheet(filename : string);

//-------------------------------------------------------------------------

implementation

//-------------------------------------------------------------------------

constructor tExcel.create;
begin
LCID := GetUserDefaultLCID;xla := CoApplication.Create;end;

//-------------------------------------------------------------------------

destructor tExcel.destroy;
begin
xla.Quit;inherited;end;

//-------------------------------------------------------------------------

procedure tExcel.AddWorkBook(Template : OleVariant);
begin
xlw := xla.Workbooks.Add(Template, LCID);end;

//-------------------------------------------------------------------------

procedure tExcel.fSetVisible(Visible : boolean);
begin
xla.visible[lcid] := Visible;end;

//-------------------------------------------------------------------------

function tExcel.fGetVisible : boolean;
begin
result := xla.visible[lcid];end;

//-------------------------------------------------------------------------

procedure tExcel.fSetCell(Cell : string; Value : OLEVariant);
begin
xla.Range['A1', 'A1'].Value := value;end;

//-------------------------------------------------------------------------

function tExcel.fGetCell(Cell : string) : OleVariant;
begin
result := xla.Range['A1', 'A1'].Value;end;

//-------------------------------------------------------------------------

procedure tExcel.SaveAs(filename : string);
begin
xlw.SaveAs(filename,xlWorkbookNormal,'','',False,False,xlNoChange,xlLocalSessionChanges,true,0,0,LCID);end;

Нижеприведенный пример использует данный класс для создания электронной таблицы.

Procedure CreateSpreadsheet(filename : string);
var
xl : tExcel;begin
xl := tExcel.create;tryxl.AddWorkBook('c:\graham\excel\sample2\ssddemo.xlt');xl.visible := true;xl.cell['a1'] := 'тест';xl.SaveAs(filename);finallyxl.free;end;end;
[000198]


Содержание  Назад  Вперед