我在论坛里面搜索了很多这样的帖子都不太适用.
在Delphi中,我需要做一个报表应用,即是我已经有excel的表,而数据在Access中,但并不是要把Accsee的表完全复制过来,而是不同的字段对应不同的单元格,而且是不连续
这样需要用什么控件比较快捷,是否需要ADO的控件和ExcelApplication?
问题比较急,望回复!
在Delphi中,我需要做一个报表应用,即是我已经有excel的表,而数据在Access中,但并不是要把Accsee的表完全复制过来,而是不同的字段对应不同的单元格,而且是不连续
这样需要用什么控件比较快捷,是否需要ADO的控件和ExcelApplication?
问题比较急,望回复!
var
sTmpPath: array[0..255] of Char;
sFileNameDoc: string;
Excel: OleVariant;
i, j: integer;
s: string;
begin
GetTempPath(255, sTmpPath);
sFileNameDoc := sTmpPath + 'Excel.xls';
try
Excel := CreateOleObject('Excel.Application');
except
OkMessageDlg('微软Excel没有安装,请先安装Excel软件。');
Excel.Quit;
Excel:=UnAssigned;
abort;
end;
try
Excel.Visible := True;
Excel.Workbooks.Open(sFileNameDoc);
for i := 1 to 44 do
for j := 1 to 7 do
begin
s := Excel.Cells[i, j];
if s = '姓名' then Excel.Cells[i, j + 1] := '张三';
end;
finally
Excel.Quit;
Excel := UnAssigned;
end;
end;
我觉得你从数据库里面取出来的数据应该有指定位置吧。在word中可以用书签来定位,在excel中不知道用什么定位,所以就只好根据EXCEL表中现在的内容来确定要填数据的单元格了。就像上例找到了‘姓名’的位置,那应该在后面或者下面填从数据库里面去出来的名字吧!
这是在程序中打开的临时文件夹里面存在的Excel表,如果不是在程序里面打开的,那我就不会用了。还有就是怎么得到EXCEL表里面的行和列我不知道,所以我用了固定值44和7。我也正为此问题发愁呢!如果那位知道,请告诉我一下。
好象很罗嗦哦!我也是初学,很多都不懂,也不会用!请多多指教!呵呵
谢谢!