{*******************************************************}
{ }
{ 导出Tdbgrideh数据 }
{ }
{ 版权所有 (C) 2007 咏南工作室 }
{ }
{*******************************************************}
unit uExport;
interface
uses
DBGridEhImpExp, DBGridEh, SysUtils, Dialogs, ComObj, ActiveX, Variants, db,
FormWait,Windows,Graphics;
procedure ExpDbgridEh(grid:TDBGridEh;OpenExcel:Boolean=True);
procedure ImpDbgridEH(Grid:TDBGridEh);
implementation
//==============================================================================
// 增加进度条显示 by cxg 2008-01-05 10:08:09
//==============================================================================
procedure ImpDbgridEH(Grid:TDBGridEh);
var
OpenDialog:TOpenDialog;
begin
if (not Assigned(grid)) or (not grid.DataSource.DataSet.Active) then
exit;
OpenDialog:=TOpenDialog.create(nil);
try
OpenDialog.Filter:='文本文件|*.TXT';
OpenDialog.FilterIndex:=1;
if OpenDialog.Execute then
begin
ShowWaitText('请稍候');
LoadDBGridEhFromImportFile(TDBGridEhImportAsText,
Grid,OpenDialog.FileName,True);
end;
finally
OpenDialog.Free;
ShowWaitText();
end;
end;
procedure ExpDbgridEh(grid:TDBGridEh;OpenExcel:Boolean=True);
var
ExpClass:TDBGridEhExportClass;
Ext:String;
SaveDialog:TSaveDialog;
ExcelApp: Variant;
begin
if (not Assigned(grid)) or (not grid.DataSource.DataSet.Active)
or (grid.DataSource.DataSet.IsEmpty) then exit;
SaveDialog:=TSaveDialog.Create(nil);
try
SaveDialog.FileName := '文件1';
SaveDialog.Filter:='EXCEL电子表格|*.XLS|HTML网页|*.HTM|文本文件|*.TXT|CSV'
+'|*.CSV|RTF富文本|*.RTF';
SaveDialog.FilterIndex:=1;
if SaveDialog.Execute then
begin
ShowWaitText('请稍候');
try
case SaveDialog.FilterIndex of
1: begin ExpClass := TDBGridEhExportAsXLS; Ext := 'xls'; end;
2: begin ExpClass := TDBGridEhExportAsHTML; Ext := 'htm'; end;
3: begin ExpClass := TDBGridEhExportAsText; Ext := 'txt'; end;
4: begin ExpClass := TDBGridEhExportAsCSV; Ext := 'csv'; end;
5: begin ExpClass := TDBGridEhExportAsRTF; Ext := 'rtf'; end;
else
ExpClass := nil; Ext := '';
end;
if ExpClass <> nil then
begin
if UpperCase(Copy(SaveDialog.FileName,
Length(SaveDialog.FileName)-2,3))<> UpperCase(Ext) then
SaveDialog.FileName := SaveDialog.FileName + '.' + Ext;
SaveDBGridEhToExportFile(ExpClass,grid,SaveDialog.FileName,true);
if SaveDialog.FilterIndex=1 then
begin
if OpenExcel then
begin
ExcelApp := CreateOleObject( 'Excel.Application' );
ExcelApp.visible := True;
ExcelApp.workbooks.add;
ExcelApp.WorkBooks.Open(SaveDialog.FileName);
ExcelApp.ActiveSheet.PageSetup.PrintGridLines := True;
//ExcelApp.ActiveSheet.PageSetup.CenterHeader := '咏南工作室';
ExcelApp.ActiveSheet.PageSetup.CenterFooter := '第&P页';
ExcelApp.ActiveSheet.Rows[1].Font.Name := '宋体';
ExcelApp.ActiveSheet.Rows[1].Font.Color := clBlue;
//ExcelApp.ActiveSheet.Rows[1].Font.Bold := True;
end;
end;
//excel的列从1开始记数,DBGRIDEH的列从0开始记数
//excel的列宽以字符为单位,DBGRIDEH的列宽不同
end;
finally
ShowWaitText();
end;
end;
finally
FreeAndNil(SaveDialog);
end;
end;
end.