可以把TClientDataSet中的数据用dbgrideh显示出来,然后利用dbgrideh的功能可以保存为多种格式包括excel。 在窗体中添加一个SaveDialog组件和“导出”按钮B_exp,在“导出”按钮的click事件中添加如下代码: procedure TForm1.B_expClick(Sender: TObject); var ExpClass:TDBGridEhExportClass; Ext:String; begin SaveDialog1.FileName := 'file1'; if (ActiveControl is TDBGridEh) then if SaveDialog1.Execute then begin case SaveDialog1.FilterIndex of 1: begin ExpClass := TDBGridEhExportAsText; Ext := 'txt'; end; 2: begin ExpClass := TDBGridEhExportAsCSV; Ext := 'csv'; end; 3: begin ExpClass := TDBGridEhExportAsHTML; Ext := 'htm'; end; 4: begin ExpClass := TDBGridEhExportAsRTF; Ext := 'rtf'; end; 5: begin ExpClass := TDBGridEhExportAsXLS; Ext := 'xls'; end; else ExpClass := nil; Ext := ''; end; if ExpClass <> nil then begin if UpperCase(Copy(SaveDialog1.FileName,Length(SaveDialog1.FileName)-2,3)) <> UpperCase(Ext) then SaveDialog1.FileName := SaveDialog1.FileName + '.' + Ext; SaveDBGridEhToExportFile(ExpClass,DBGridEh1,SaveDialog1.FileName,False); //其中false为局部数据 end; end; end;
TClientDataSet不是DataSet吗?可以直接用,且导出效率高。或者你不想用控件?想自己写?或者你想用拷贝就能用代码,控件都不想研究?
TClientDataSet不是DataSet吗?可以直接用,且导出效率高。或者你不想用控件?想自己写?或者你想用拷贝就能用代码,控件都不想研究?
就是想直接用TClientDataSet,但是不知道怎么用,刚接触delphi。
http://bbs.csdn.net/topics/290088735
也可参考博客里的代码 http://blog.csdn.net/avan_lau/article/details/24470345
这里有你可以直接拷贝用的代码
TClientDataSet不是DataSet吗?可以直接用,且导出效率高。或者你不想用控件?想自己写?或者你想用拷贝就能用代码,控件都不想研究?
就是想直接用TClientDataSet,但是不知道怎么用,刚接触delphi。
如果一无所知,就来问题。很难给问题一个善终....
procedure TForm1.B_expClick(Sender: TObject);
var
ExpClass:TDBGridEhExportClass;
Ext:String;
begin
SaveDialog1.FileName := 'file1';
if (ActiveControl is TDBGridEh) then
if SaveDialog1.Execute then
begin
case SaveDialog1.FilterIndex of
1: begin ExpClass := TDBGridEhExportAsText; Ext := 'txt'; end;
2: begin ExpClass := TDBGridEhExportAsCSV; Ext := 'csv'; end;
3: begin ExpClass := TDBGridEhExportAsHTML; Ext := 'htm'; end;
4: begin ExpClass := TDBGridEhExportAsRTF; Ext := 'rtf'; end;
5: begin ExpClass := TDBGridEhExportAsXLS; Ext := 'xls'; end;
else
ExpClass := nil; Ext := '';
end;
if ExpClass <> nil then
begin
if UpperCase(Copy(SaveDialog1.FileName,Length(SaveDialog1.FileName)-2,3)) <> UpperCase(Ext) then
SaveDialog1.FileName := SaveDialog1.FileName + '.' + Ext;
SaveDBGridEhToExportFile(ExpClass,DBGridEh1,SaveDialog1.FileName,False);
//其中false为局部数据
end;
end;
end;