procedure ToExce(table1:Tdataset); var WorkBk : _WorkBook; // Define a WorkBook WorkSheet : _WorkSheet; // Define a WorkSheet I, J, R, C : Integer; IIndex : OleVariant; TabGrid : Variant; XLapp:TexcelApplication; begin XLapp:=TexcelApplication.create(nil); IIndex := 1; R := table1.RecordCount; C := table1.FieldCount; TabGrid := VarArrayCreate([0,(R - 1),0,(C - 1)],VarOleStr); I := 0;
table1.First; while not table1.Eof do begin for J := 0 to (C - 1) do TabGrid[I,J] := table1.Fields[J].Asstring ; Inc(I,1); table1.Next ; end; // XLApp.Connect; XLApp.WorkBooks.Add(xlWBatWorkSheet,0);
WorkBk := XLApp.WorkBooks.Item[IIndex];
WorkSheet := WorkBk.WorkSheets.Get_Item(1) as _WorkSheet; Worksheet.Range['A1',Worksheet.Cells.Item[R,C]].Value := TabGrid;
如果你是用ListView显示数据的话,下面这段代码可以将其中的数据 导出到Excel里面 uses comobj;var excelapp,newbook,newsheet:variant; i:integer; begin try excelapp:=createoleobject('excel.application'); newbook:=excelapp.workbooks.add; newsheet:=newbook.sheets.add; excelapp.visible:=true; for j:=0 to listview1.Items.Count-1 do for i:=0 to listview1.Columns.Count-2 do //excel的行,列下标从1开始,所以要加1 newsheet.cells.item(j+1,i+1):=lv1.Items[j].SubItems[i]; finally newbook:=Unassigned; newsheet:=Unassigned; excelapp:=Unassigned; end; end;
最后可能还有刚才你写的查询的字段名,不用管它,删了就行。明白了吧,在程序里面写一个文本文件,保存成.dqy文件,然后打开一个excel,用excel打开这个文件就可以了。
var
WorkBk : _WorkBook; // Define a WorkBook
WorkSheet : _WorkSheet; // Define a WorkSheet
I, J, R, C : Integer;
IIndex : OleVariant;
TabGrid : Variant;
XLapp:TexcelApplication;
begin
XLapp:=TexcelApplication.create(nil);
IIndex := 1;
R := table1.RecordCount;
C := table1.FieldCount;
TabGrid := VarArrayCreate([0,(R - 1),0,(C - 1)],VarOleStr); I := 0;
table1.First;
while not table1.Eof do
begin
for J := 0 to (C - 1) do
TabGrid[I,J] := table1.Fields[J].Asstring ;
Inc(I,1);
table1.Next ;
end; // XLApp.Connect;
XLApp.WorkBooks.Add(xlWBatWorkSheet,0);
WorkBk := XLApp.WorkBooks.Item[IIndex];
WorkSheet := WorkBk.WorkSheets.Get_Item(1) as _WorkSheet;
Worksheet.Range['A1',Worksheet.Cells.Item[R,C]].Value := TabGrid;
//WorkSheet.Name := 'Customers';
Worksheet.Columns.Font.Bold := True;
Worksheet.Columns.HorizontalAlignment := xlRight;
WorkSheet.Columns.ColumnWidth := 14;
XLApp.Visible[0] := True;
XLApp.Disconnect;
TabGrid := Unassigned;
end;
导出到Excel里面
uses comobj;var
excelapp,newbook,newsheet:variant;
i:integer;
begin
try
excelapp:=createoleobject('excel.application');
newbook:=excelapp.workbooks.add;
newsheet:=newbook.sheets.add;
excelapp.visible:=true;
for j:=0 to listview1.Items.Count-1 do
for i:=0 to listview1.Columns.Count-2 do
//excel的行,列下标从1开始,所以要加1
newsheet.cells.item(j+1,i+1):=lv1.Items[j].SubItems[i];
finally
newbook:=Unassigned;
newsheet:=Unassigned;
excelapp:=Unassigned;
end;
end;