参考代码1
Delphi(Pascal) codepath:=ExtractFilePath(Application.ExeName);ifself.OpenDialog1.Executethenfilename:=self.OpenDialog1.FileName;
try
Self.ExcelApplication1:=TExcelApplication.Create(self);
Self.ExcelApplication1.Connect;
except
messagebox(application.Handle,'无法生成Excel报表,请确定安装了Excel后重试','信息',mb_okormb_iconinformation);
exit;end;
Self.ExcelApplication1.Visible[0]:=true;
self.ExcelApplication1.DisplayAlerts[0]:=False;
self.ExcelApplication1.Workbooks.Open(filename,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,0);
self.ExcelWorkbook1.ConnectTo(Self.ExcelApplication1.Workbooks[1]);
self.ExcelWorksheet1:=TExcelWorkSheet.Create(self);
self.ExcelWorksheet1.ConnectTo(Self.ExcelWorkbook1.Worksheets[1] as _worksheet);
i:=self.StringGrid2.RowCount;forj:=1toi-1dobeginxh:=Self.StringGrid2.Cells[0,j];
pscj:=self.StringGrid2.Cells[2,j];
kscj:=Self.StringGrid2.Cells[4,j];
zpcj:=Self.StringGrid2.Cells[5,j];
self.ExcelWorksheet1.cells.Item[l+j,m]:=pscj;
self.ExcelWorksheet1.cells.Item[l+j,n]:=kscj;
self.ExcelWorksheet1.cells.Item[l+j,k]:=zpcj;end;
Self.ExcelWorksheet1.SaveAs(filename);
Self.ExcelApplication1.Disconnect;
Self.ExcelWorkbook1.Disconnect;
Self.ExcelWorksheet1.Disconnect;
Delphi(Pascal) code
path:=ExtractFilePath(Application.ExeName);
if self.OpenDialog1.Execute then
filename:=self.OpenDialog1.FileName;
try
Self.ExcelApplication1:=TExcelApplication.Create(self);
Self.ExcelApplication1.Connect;
except
messagebox(application.Handle,'无法生成Excel报表,请确定安装了Excel后重试','信息',mb_ok or mb_iconinformation);
e…
try
excel := CreateOleObject('Excel.Application');
WorkBook := excel.Workbooks.Add('模板的路径.xls');
Sheet := WorkBook.Worksheets[1];
except
excel := NULL;
DJShow('请先安装Excel97/2000。');
EXIT;
end;
excel.Visible:=true;
I := 2;
//假设是从数据库取数据
with ADOQuery1 do
try
first;
while not eof do
begin
Sheet.cells(i, 1) := FieldbyName('Field1').asstring;
Sheet.cells(i, 2) := FieldbyName('Field2').asstring;
Sheet.cells(i, 3) := FieldbyName('Field3').asstring;
Inc(I);
Next;
end;
finally
free;
end;
try
excel.Visible:=true;
WorkBook.Saved := True;
finally
excel.Quit;
excel:=Unassigned;
end;
在單元中加入comobj;procedureTForm1.Button1Click(Sender: TObject);vara,b : string;
ExcelApp,WorkBook:Variant;
ExcelRowCount:integer;
i:integer;beginExcelApp:=CreateOleObject('Excel.Application');//創建Excel程序
opendialog1.Execute;//打開對話框
WorkBook :=ExcelApp.WorkBooks.Open(opendialog1.FileName);
ExcelApp.Visible :=false;
ExcelRowCount :=WorkBook.WorkSheets[1].UsedRange.Rows.Count;//獲取Excel的行數fori:=1toExcelRowCount+1dobegina:=excelapp.Cells.Value;//第一列的值
b:=excelapp.Cells.Value;//第二列的值if(excelapp.Cells.Value='')and(excelapp.Cells.Value='')then//第一列與第二列值都為空 則中止
breakelsebeginwithadoquery1dobeginclose;
sql.Clear;
sql.Add('insert into reny0830(a,b) values(:A,:B)');//往表中插入Excel的內容
parameters.ParamByName('A').Value:=a;
parameters.ParamByName('B').Value:=b;
Execsql;end;end;end;
WorkBook.Close;//关闭工作簿
ExcelApp.Quit;//退出Excel
ExcelApp:=Unassigned;//釋放變量
WorkBook:=Unassigned;withadoquery1do//把結果顯示出來beginclose;
sql.Clear;
sql.Add('select * from reny0830');
open;end;end;
procedureTmainFrm.Button4Click(Sender: TObject);vari, row, column:integer;beginifnotmainAdo.Activethenbeginmessagedlg('數據集沒有打開,不能轉Excel!',mtwarning,[mbOK],0);endelsebegintry ExcelApplication1.Connect;
except
MessageDlg('Excel may not be installed',
mtError, [mbOk],0);
Abort;
End;
mainAdo.First;
ExcelApplication1.Visible[0] :=true;
ExcelApplication1.Caption :='Excel';
ExcelApplication1.Workbooks.Add(Null,0);
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);
ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _Worksheet);
row:=1;fori:=0tomainAdo.FieldCount-1dobeginExcelWorksheet1.Cells.Item[1,i+1]:=mainAdo.Fields[i].DisplayName;end;
row:=row+1;whilenotmainAdo.Eofdobegincolumn:=1;fori:=1tomainAdo.FieldCountdobeginExcelWorksheet1.Cells.Item[row,column]:=mainAdo.Fields[i-1].AsString;
column:=column+1;end;
mainAdo.Next;
row:=row+1;end;
ExcelApplication1.Disconnect;
ExcelWorkbook1.Disconnect;
ExcelWorksheet1.Disconnect;end;end;