王
王琦
Unregistered / Unconfirmed
GUEST, unregistred user!
我的想法是:我要经常利用已存在的这个Excel表格的格式,这样套用不需每次都划表(下面附一文章,它但是成立一个新Excel表)。
附:《Delphi5.0编写OLE程序操纵Excel》文章:
OLE自动化是Windows应用程序之间互相操纵的一种技巧。被操纵的一方称为自动
化服务器(也称自动化对象),典型的自动化服务器有Microsoft Word、Excel和
Powerpoint。操纵自动化服务器的一方称为自动化控制器。在开发数据库应有程序
中,经常需要借助Microsoft Excel的强大报表功能,把数据库中的数据输出到Excel
表格中。Delphi 5.0以前的版本虽然也可以编写自动化控制器和自动化服务器,但编
写程序较为复杂,不易掌握。Delphi 5.0对于OLE提供了强大的支持,利用Delphi 5.0
最新提供的Servers栏控件可以很容易开发OLE自动化控制器实现对OLE自动化服务器的
调用,发挥Word、Excel、Powerpoint的强大功能。
---- 下面给出一利用Delphi 5.0开发OLE自动化控制器操纵Excel的实例,希望对用
Delphi开发OLE应用程序的编程人员有所帮助。
---- 首先新建一Application, 然后在Form1上放置Servers栏控件
ExcelApplication1、 ExcelWorkbook1、 ExcelWorksheet1, 再放置控件Table1、
Datasource1、 Dbgrid1、 Button1、 Button2、 Button3、 Button4, 并设置
Table1.databasename:=dbdemos, Table1.TableName:=Country.db,
Table1.active:=True, Button1.Caption:='SaveToExcel',
Button2.caption:='PrintPreview', Button3.caption:='Print',
Button4.caption:='CloseExcel'。代码如下:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes,
Graphics, Controls,
Forms, Dialogs, Excel97, OleServer, Db, DBTables,
Grids, DBGrids, StdCtrls;
type
TForm1 = class(TForm)
ExcelApplication1: TExcelApplication;
ExcelWorkbook1: TExcelWorkbook;
ExcelWorksheet1: TExcelWorksheet;
Table1: TTable;
Table1Name: TStringField;
Table1Capital: TStringField;
Table1Continent: TStringField;
Table1Area: TFloatField;
Table1Population: TFloatField;
button1: TButton;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
Button2: TButton;
Button3: TButton;
Button4: TButton;
procedure button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.button1Click(Sender: TObject);
var
i,row,column:integer;
begin
Try
ExcelApplication1.Connect;
Except
MessageDlg('Excel may not be installed',
mtError, [mbOk], 0);
Abort;
End;
ExcelApplication1.Visible[0]:=True;
ExcelApplication1.Caption:='Excel Application';
ExcelApplication1.Workbooks.Add(Null,0);
ExcelWorkbook1.ConnectTo
(ExcelApplication1.Workbooks[1]);
ExcelWorksheet1.ConnectTo
(ExcelWorkbook1.Worksheets[1] as _Worksheet);
Table1.Open;
row:=1;
While Not(Table1.Eof) do
begin
column:=1;
for i:=1 to Table1.FieldCount do
begin
ExcelWorksheet1.Cells.Item[row,column]:
=Table1.fields[i-1].AsString;
column:=column+1;
end;
Table1.Next;
row:=row+1;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
ExcelWorksheet1.PrintPreview;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
ExcelWorksheet1.PrintOut;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
ExcelApplication1.Disconnect;
ExcelApplication1.Quit;
end;
end.
---- 本程序在Delphi 5.0下调试通过。
附:《Delphi5.0编写OLE程序操纵Excel》文章:
OLE自动化是Windows应用程序之间互相操纵的一种技巧。被操纵的一方称为自动
化服务器(也称自动化对象),典型的自动化服务器有Microsoft Word、Excel和
Powerpoint。操纵自动化服务器的一方称为自动化控制器。在开发数据库应有程序
中,经常需要借助Microsoft Excel的强大报表功能,把数据库中的数据输出到Excel
表格中。Delphi 5.0以前的版本虽然也可以编写自动化控制器和自动化服务器,但编
写程序较为复杂,不易掌握。Delphi 5.0对于OLE提供了强大的支持,利用Delphi 5.0
最新提供的Servers栏控件可以很容易开发OLE自动化控制器实现对OLE自动化服务器的
调用,发挥Word、Excel、Powerpoint的强大功能。
---- 下面给出一利用Delphi 5.0开发OLE自动化控制器操纵Excel的实例,希望对用
Delphi开发OLE应用程序的编程人员有所帮助。
---- 首先新建一Application, 然后在Form1上放置Servers栏控件
ExcelApplication1、 ExcelWorkbook1、 ExcelWorksheet1, 再放置控件Table1、
Datasource1、 Dbgrid1、 Button1、 Button2、 Button3、 Button4, 并设置
Table1.databasename:=dbdemos, Table1.TableName:=Country.db,
Table1.active:=True, Button1.Caption:='SaveToExcel',
Button2.caption:='PrintPreview', Button3.caption:='Print',
Button4.caption:='CloseExcel'。代码如下:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes,
Graphics, Controls,
Forms, Dialogs, Excel97, OleServer, Db, DBTables,
Grids, DBGrids, StdCtrls;
type
TForm1 = class(TForm)
ExcelApplication1: TExcelApplication;
ExcelWorkbook1: TExcelWorkbook;
ExcelWorksheet1: TExcelWorksheet;
Table1: TTable;
Table1Name: TStringField;
Table1Capital: TStringField;
Table1Continent: TStringField;
Table1Area: TFloatField;
Table1Population: TFloatField;
button1: TButton;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
Button2: TButton;
Button3: TButton;
Button4: TButton;
procedure button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.button1Click(Sender: TObject);
var
i,row,column:integer;
begin
Try
ExcelApplication1.Connect;
Except
MessageDlg('Excel may not be installed',
mtError, [mbOk], 0);
Abort;
End;
ExcelApplication1.Visible[0]:=True;
ExcelApplication1.Caption:='Excel Application';
ExcelApplication1.Workbooks.Add(Null,0);
ExcelWorkbook1.ConnectTo
(ExcelApplication1.Workbooks[1]);
ExcelWorksheet1.ConnectTo
(ExcelWorkbook1.Worksheets[1] as _Worksheet);
Table1.Open;
row:=1;
While Not(Table1.Eof) do
begin
column:=1;
for i:=1 to Table1.FieldCount do
begin
ExcelWorksheet1.Cells.Item[row,column]:
=Table1.fields[i-1].AsString;
column:=column+1;
end;
Table1.Next;
row:=row+1;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
ExcelWorksheet1.PrintPreview;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
ExcelWorksheet1.PrintOut;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
ExcelApplication1.Disconnect;
ExcelApplication1.Quit;
end;
end.
---- 本程序在Delphi 5.0下调试通过。