uses Variants;
procedure DBGridSaveToExcel(DbGridEh:TDBGridEh);
var
sFileName:string;
ExcelObj, Excel, WorkBook, Sheet1: OleVariant;
SaveDialog: TSaveDialog;
Row1, Col1, FieldIndex, i: Integer;
OldCursor: TCursor;
FBookMark: TBookMark;
begin
SaveDialog := TSaveDialog.Create(nil);
SaveDialog.Filter := 'Microsoft Excel 文件|*.xls;*.xlsx';
//SaveDialog.DefaultExt := '.xls';
UpdateWindow(GetActiveWindow);
sFileName := '';
if SaveDialog.Execute then
sFileName := SaveDialog.FileName;
SaveDialog.Free;
if sFileName='' then
exit;
try
ExcelObj := CreateOleObject('Excel.Sheet');
Excel := ExcelObj.Application;
Excel.Visible := false;
WorkBook := Excel.Workbooks.Add;
Sheet1 := WorkBook.Sheets[1];
except
Gt_ShowMessage('提示', '无法调用Mircorsoft Excel! ' + chr(13) + chr(10) +'请检查是否安装了Mircorsoft Excel!', mtWarning);
Exit;
end;
Row1 := 1;
Col1 := 1;
for FieldIndex := 0 to DbGridEh.Columns.Count-1 do
begin
if DbGridEh.Columns[FieldIndex].Visible=true then
begin
Sheet1.Columns[Col1].NumberFormatLocal:='@'; //设置该列为文本格式
Sheet1.Cells(Row1, Col1) := DbGridEh.Columns[FieldIndex].Title.Caption;
Inc(Col1);
end;
end;
DBGridEh.DataSource.DataSet.DisableControls;
FBookMark := DBGridEh.DataSource.DataSet.GetBookmark;
OldCursor := Screen.Cursor;
Screen.Cursor := crHourGlass;
try
try
DBGridEh.DataSource.DataSet.First;
while not DBGridEh.DataSource.DataSet.Eof do
begin
inc(Row1);
Col1 := 1;
for i := 0 to DBGridEh.DataSource.DataSet.FieldCount - 1 do
begin
if DBGridEh.Columns[i].Visible=true then
begin
Sheet1.Cells(Row1, Col1) := DBGridEh.DataSource.DataSet.Fields[i].AsString;
Inc(Col1);
end;
end;
DBGridEh.DataSource.DataSet.Next;
end;
WorkBook.SaveAs(sFileName);
ShowMessage('导出成功。');
except
ShowMessage( '导出失败,请重新导出。');
end;
finally
DBGridEh.DataSource.DataSet.GotoBookmark(FBookMark);
DBGridEh.DataSource.DataSet.EnableControls;
Screen.Cursor := OldCursor;
Excel.Quit;
Excel := Unassigned;
end;
end;
www.taoyou100.cn 淘友100 满意100,提供给您最信赖的网络购物享受。