給你代碼: function GridToExcel(v_gld: TwwDBGrid; visible: boolean; excelfilename: string): boolean; var excelobj, excel, workbook, sheet: olevariant; oldcursor: tcursor; savedialog: tsavedialog; begin result := false; if not v_gld.DataSource.DataSet.active then exit; oldcursor := screen.cursor; screen.cursor := crhourglass; try excelobj := createoleobject('excel.sheet'); excel := excelobj.application; excel.visible := visible; workbook := excel.workbooks.add; sheet := workbook.sheets[1]; except messagebox(getactivewindow, 'µLªk½Õ¥Îmircorsoft excel! ' + chr(13) + chr(10) + '½ÐÀˬd¬O§_¦w¸Ë¤Fmircorsoft excel¡C', '´£¥Ü', mb_ok + mb_iconinformation); screen.cursor := oldcursor; exit; end; result := dbgridtoexcelsheet(v_gld, sheet); if result then if not visible then begin if excelfilename <> '' then workbook.saveas(filename := excelfilename) else begin savedialog := tsavedialog.create(nil); savedialog.filter := 'microsoft excel ¤å¥ó|*.xls'; result := savedialog.execute; updatewindow(getactivewindow); if result then workbook.saveas(filename := savedialog.filename); savedialog.free; end; excel.quit; end; screen.cursor := oldcursor; end;//±N¼ÆÕu¶°«O¦s¨ìEXCEL¤¤function DatasetToExcelsheet(dataset: tdataset; fieldtagmax: integer; sheet: olevariant): boolean; var row, col, fieldindex: integer; bk: tbook; begin result := false; if not dataset.active then exit; bk := dataset.getbook; dataset.disablecontrols; sheet.activate; try // ¦C¼ÐÃD row := 1; col := 1; for fieldindex := 0 to dataset.fieldcount - 1 do begin if dataset.fields[fieldindex].tag <= fieldtagmax then begin sheet.cells(row, col) := dataset.fields[fieldindex].displaylabel; inc(col); end; end; // ªí¤º®e dataset.first; while not dataset.eof do begin row := row + 1; col := 1; for fieldindex := 0 to dataset.fieldcount - 1 do begin if dataset.fields[fieldindex].tag <= fieldtagmax then begin if dataset.Fields[fieldindex].DataType = ftString then sheet.cells(row, col) := '''' + dataset.fields[fieldindex].asstring else sheet.cells(row, col) := dataset.fields[fieldindex].asstring; inc(col); end; end; dataset.next; end; result := true; finally dataset.gotobook(bk); dataset.enablecontrols; end; end;
function GridToExcel(v_gld: TwwDBGrid; visible: boolean; excelfilename:
string): boolean;
var
excelobj, excel, workbook, sheet: olevariant;
oldcursor: tcursor;
savedialog: tsavedialog;
begin
result := false;
if not v_gld.DataSource.DataSet.active then
exit; oldcursor := screen.cursor;
screen.cursor := crhourglass; try
excelobj := createoleobject('excel.sheet');
excel := excelobj.application;
excel.visible := visible;
workbook := excel.workbooks.add;
sheet := workbook.sheets[1];
except
messagebox(getactivewindow, 'µLªk½Õ¥Îmircorsoft excel! ' + chr(13) + chr(10)
+
'½ÐÀˬd¬O§_¦w¸Ë¤Fmircorsoft excel¡C', '´£¥Ü', mb_ok + mb_iconinformation);
screen.cursor := oldcursor;
exit;
end; result := dbgridtoexcelsheet(v_gld, sheet);
if result then
if not visible then
begin
if excelfilename <> '' then
workbook.saveas(filename := excelfilename)
else
begin
savedialog := tsavedialog.create(nil);
savedialog.filter := 'microsoft excel ¤å¥ó|*.xls';
result := savedialog.execute;
updatewindow(getactivewindow);
if result then
workbook.saveas(filename := savedialog.filename);
savedialog.free;
end;
excel.quit;
end;
screen.cursor := oldcursor;
end;//±N¼ÆÕu¶°«O¦s¨ìEXCEL¤¤function DatasetToExcelsheet(dataset: tdataset;
fieldtagmax: integer; sheet: olevariant): boolean;
var
row, col, fieldindex: integer;
bk: tbook;
begin
result := false;
if not dataset.active then
exit;
bk := dataset.getbook;
dataset.disablecontrols; sheet.activate;
try // ¦C¼ÐÃD
row := 1;
col := 1;
for fieldindex := 0 to dataset.fieldcount - 1 do
begin
if dataset.fields[fieldindex].tag <= fieldtagmax then
begin
sheet.cells(row, col) := dataset.fields[fieldindex].displaylabel;
inc(col);
end;
end;
// ªí¤º®e
dataset.first;
while not dataset.eof do
begin
row := row + 1;
col := 1;
for fieldindex := 0 to dataset.fieldcount - 1 do
begin
if dataset.fields[fieldindex].tag <= fieldtagmax then
begin
if dataset.Fields[fieldindex].DataType = ftString then
sheet.cells(row, col) := '''' + dataset.fields[fieldindex].asstring
else
sheet.cells(row, col) := dataset.fields[fieldindex].asstring;
inc(col);
end;
end;
dataset.next;
end; result := true;
finally
dataset.gotobook(bk);
dataset.enablecontrols;
end;
end;