我想知道netup的问题的答案:
非常感谢sandy.
但我使用OLE的方法是一切OK
但用DELPHI的控件, 却好象有一点问题,因为我是不太懂.办公自动化这一块, 如
不知是何故, 但就我使用, 我觉得, 控件方法的使用, 不如OLE,有些用法不同微软
的VBA一样.但OLE方式就一样了.
(二) 使用Delphi 控件方法
在Form中分别放入ExcelApplication, ExcelWorkbook和ExcelWorksheet。
1) 打开Excel
ExcelApplication1.Connect;
2) 显示当前窗口:
ExcelApplication1.Visible[0]:=True; //OK
3) 更改 Excel 标题栏:
ExcelApplication1.Caption := '应用程序调用 Microsoft Excel'; //OK
4) 添加新工作簿:
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,0)); //OK
5) 添加新工作表://OK
var Temp_Worksheet: _WorkSheet;
begin
Temp_Worksheet:=ExcelWorkbook1.
WorkSheets.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam,0) as _WorkSheet;
ExcelWorkSheet1.ConnectTo(Temp_WorkSheet);
End;
6) 打开已存在的工作簿://OK
ExcelApplication1.Workbooks.Open (c:/a.xls
EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,0)
7) 设置第2个工作表为活动工作表://OK
ExcelApplication1.WorkSheets[2].Activate; 或
ExcelApplication1.WorksSheets[ 'Sheet2' ].Activate;
8) 给单元格赋值://?????????
ExcelApplication1.Cells[1,4].Value := '第一行第四列';
改为:ExcelApplication1.Cells.ITEM[1,4].Value := '第一行第四列';
9) 设置指定列的宽度(单位:字符个数),以第一列为例://?????? 出错
ExcelApplication1.ActiveSheet.Columns[1].ColumnsWidth := 5;
ExcelApplication1.ActiveSheet返回的类型为: IDISPATCH, 所以不能编译,
改为: _WORKSHEET(ExcelApplication1.ActiveSheet).Columns.ITEM['A1','A1'].ColumnsWidth := 5;//
编译通过, 但出错.
_WORKSHEET(ExcelApplication1.ActiveSheet).Columns[1] .ColumnsWidth := 5; //不能编译
后面的我就没测了, 不知大家有没有试, 我对此不是很了解. 望指正.
另:
vb 含意 DEPHI
Range ("A1") 儲存格 A1 RANGE['A1', 'A1']
Range("A1:B5") 從儲存格 A1 到儲存格 B5 的範圍 RANGE['A1', 'B5']
Range("C5
9,G9:H16") 多塊的指定範圍 RANGE['C5
9','G9:H16']
Range("A:A") A 欄 不知如何表示
Range("1:1") 第一列 不知如何表示
Range("A:C") 從 A 欄到 C 欄的範圍 不知如何表示
Range("1:5") 從第一列到第五列的範圍 不知如何表示
Range("1:1,3:3,8:8") 第一、三和第八列 不知如何表示
Range("A:A,C:C,F:F") A 欄、 C 欄和 F 欄 不知如何表示