var Sht:Variant begin App:=CreateOleObject('excel.application'); Application.ProcessMessages; App.Workbooks.Add sht:=App.Workbooks[1].WorkSheets[1];/// end;
我是将dbgrid的数据直接输出到电子表格文件中,而非创建一个execl文件并逐行往里面写数据。
uses DBGridEhImpExp; SaveDialog1.Filter:='Excel文件 (*.XLS)'; SaveDialog1.DefaultExt:='XLS'; if SaveDialog1.Execute then begin for i:=2 to DBGridEh1.RowCount do SaveDBGridEhToExportFile(TDBGridEhExportAsXLS,DBGridEh1,SaveDialog1.FileName,True); end;
to bobocn:谢谢,你这个用法我知道,但如何将数据导入到已存在的execl表中的sheet2呢?
在你的窗体上首先得有EXCELBOOK,EXCELSHEET,EXCELAPPLICATION这个控件.这些控件在SERVERS里面,可以自己添加,procedure Tzhuyee.EncartaButton4Click(Sender: TObject); var i,row,column:integer; begin with dm do begin Try ExcelApplication1.Connect; Except MessageDlg('Excel 可能没有安装',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); ADOTable1.Open; row:=1; While Not(ADOTable1.Eof) do begin column:=1; for i:=1 to ADOTable1.FieldCount do begin ExcelWorksheet1.Cells.Item[row,column]:=ADOTable1.fields[i-1].AsString; column:=column+1; end; ADOTable1.Next; row:=row+1; end; end; end;
Sht:Variant
begin
App:=CreateOleObject('excel.application');
Application.ProcessMessages;
App.Workbooks.Add
sht:=App.Workbooks[1].WorkSheets[1];///
end;
SaveDialog1.Filter:='Excel文件 (*.XLS)';
SaveDialog1.DefaultExt:='XLS';
if SaveDialog1.Execute then
begin
for i:=2 to DBGridEh1.RowCount do
SaveDBGridEhToExportFile(TDBGridEhExportAsXLS,DBGridEh1,SaveDialog1.FileName,True);
end;
var
i,row,column:integer;
begin
with dm do
begin
Try
ExcelApplication1.Connect;
Except
MessageDlg('Excel 可能没有安装',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);
ADOTable1.Open;
row:=1;
While Not(ADOTable1.Eof) do
begin
column:=1;
for i:=1 to ADOTable1.FieldCount do
begin
ExcelWorksheet1.Cells.Item[row,column]:=ADOTable1.fields[i-1].AsString;
column:=column+1;
end;
ADOTable1.Next;
row:=row+1;
end;
end;
end;
I want to know it,also.