Delphi5对Excel的COM 编程(100分)

  • 主题发起人 主题发起人 softwind
  • 开始时间 开始时间
S

softwind

Unregistered / Unconfirmed
GUEST, unregistred user!
Delphi5对Excel的COM 编程(一)
关键词:Delphi,COM
Delphi5在Server Tab中封装了几个有关Excel的COM控件,
利用它们程序员可以很好的将数据库中的数据传入Excel中生成报表,方便而且快捷。虽然Delphi5中有Quick Report VCL,但如果记录上了几千条,就会发生内存溢出错误,更别说上万条,况且应该承认Windows下Excel是最好的报表软件。
本文假设读者已对COM编程有一定了解,以下简单介绍了Delphi5如何调用其封装Excel COM控件,深入的Excel编程,大家可参看Excel的开发文档。
一、 打开Excel
lcid := GetUserDefaultLCID;
ExcelApplication1.Visible[lcid]:=True;
ExcelWorkBook1.ConnectTo(ExcelApplication1.Workbooks.Add(TOleEnum(xlWBATWorksheet), lcid));
ExcelWorkSheet1.ConnectTo(ExcelWorkBook1.Worksheets[1] as _Worksheet);
ExcelWorkSheet1.Name := '数据';
以上代码创建了一个新的WorkBook和一个WorkSheet,并且给
Sheet的名取为“数据”。其中WorkBook使用了Add方法新建工作簿。新建的工作簿将成为活动工作簿。
Add(Template)中的Template为 Variant 类型,可选。指出如何创建工作簿。如果本参数为指定一现存 Microsoft Excel 文件名的字符串,那么创建新工作簿将以该文件作为模板。如果本参数为常量,新工作簿将包含指定类型的单个工作表。可为下列 XlWBATemplate 常量之一:xlWBATChart、 xlWBATExcel4IntlMacroSheet、 xlWBATExcel4MacroSheet 或 xlWBATWorksheet。
二、 导入数据库数据
往项目中加入一个Table1,设定DatabaseName为DBDemos,
TableName为employee.db,以下为实现代码:
WS是TExcelWorkSheet的实例
procedure TMain.Button1Click(Sender: TObject);
var Row ,nCount, i ,Len: integer;
Column :byte;
Ch :String;
begin
ExcelApplication1.ScreenUpdating[lcid] := False;
try
WS.Range['B1', 'B1'].Value := 'DBDemos 示范例';
WS.Range['A1', 'A1'].EntireRow.Interior.Color := clGray;
with WS.Range['B1', 'B1'].Font do
begin
Size := 22;
Name := 'Times New Roman';
FontStyle := 'Bold';
end;
Table1.Open;
nCount := Table1.FieldCount;
Column := 65;
for i := 0 to nCount-1 do
begin
Ch := Chr(Column) + '2';
WS.Range[Chr(Column) + '2', Chr(Column) + '2'].Value := Table1.Fields.FieldName;
Column := Column + 1;
end;
//以上代码将字段名称写入Excel,65是字母A的ASCII值
Table1.First;
Row := 3;
While not Table1.Eof do
begin
for i :=0 to nCount-1 do
begin
WS.Cells.Item[Row,i+1].Value:= le1.Fields.Fields.AsString;
end;
Row := Row + 1;
Table1.Next;
end;
Table1.Close;
finally
ExcelApplication1.ScreenUpdating[lcid] := True;
end;
//以上代码将Table1中的所有记录写入Excel
end;

最后显示结果如上图。
通过上面例子,你也许会感悟到Excel把我们的工作变轻松了,Delphi程序员不必再花很多时间在Quick Report上,为设计界面,统计制作等费精力,你直接可利用Excel的公式完成你想要做的工作。

 
如果使用OleContainer的,效果也好;
采用Variants的方法可以很好的调用Office;
(最好换行,看的人太辛苦)

支持。
 
你的方法很好,就是有时不是特别的灵活,还是用ole
 
WS是TExcelWorkSheet的实例
是什么意思呀?
我到这就无法调试了,怎么办呀!?
 
我也觉得直接用OFFICE的类型库来得更加灵活。
 
后退
顶部