DBGridEh1 已经有数据了,button17就是将这些数据导出到excel,代码如下,但按下button17后系统没有任何操作,没有生成excel文件,请问如何将DBGridEh里的记录导出到excel?要在 uses 里引用什么么?我已经 uses DBGridEhImpExp 了。procedure Tfrmtkyw.Button17Click(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,true);
//其中false为局部数据
end;
end;
end;
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,true);
//其中false为局部数据
end;
end;
end;
去掉这个判断--->>> if (ActiveControl is TDBGridEh) then
Procedure GridExport(AGrid: TDBGridEh); //列表框导出
var ExpClass:TDBGridEhExportClass;
Ext:String;
begin
SaveDialog1.FileName := 'file1';
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,AGrid,SaveDialog1.FileName,True)
end;
end;
end;
DBGridEhToExcel: TDBGridEhToExcel;
begin
DBGridEhToExcel := TDBGridEhToExcel.Create(nil);
try
DBGridEhToExcel.TitleName := '测试测试测试测试测试测试测试';
DBGridEhToExcel.BeginDate := '开始日期:2005-07-01';
DBGridEhToExcel.EndDate := '结束日期:2005-07-18';
DBGridEhToExcel.UserName := '系统管理员';
DBGridEhToExcel.DBGridEh := DBGridEh1;
DBGridEhToExcel.ShowProgress := True;
DBGridEhToExcel.FileName := 'c:\123.xls';
DBGridEhToExcel.ExportToExcel;
finally
DBGridEhToExcel.Free;
end;
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,true);
//其中false为局部数据
end;
// end; //请把此句去掉
end;
procedure dbgridehtoexp(lsdbgrideh:tdbgrideh);
var
ExpClass:TDBGridEhExportClass;
Ext:String;
lssavedialog:tsavedialog;
begin
try
lssavedialog:=tsavedialog.Create(nil);
lssavedialog.Filter:='*.xls|*.xls|*.csv|*.csv|*.htm|*.htm|*.rtf|*.rtf|*.txt|*.txt';
lssavedialog.FileName := 'file1';
if lssavedialog.Execute then
begin
case lssavedialog.FilterIndex of
1: begin ExpClass := TDBGridEhExportAsText; Ext := 'xls'; 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 := 'txt'; end;
else
ExpClass := nil; Ext := '';
end;
if ExpClass <> nil then
begin
if UpperCase(Copy(lssavedialog.FileName,Length(lssavedialog.FileName)-2,3)) <> UpperCase(Ext) then
lssavedialog.FileName := lssavedialog.FileName + '.' + Ext;
if FileExists(lssavedialog.FileName) then
begin
if application.MessageBox('文件名已存在,是否覆盖', '提示', MB_ICONASTERISK or MB_OKCANCEL)<>idok then
begin
exit;
end;
end;
Screen.Cursor := crHourGlass;
SaveDBGridEhToExportFile(ExpClass,lsDBGridEh,lssavedialog.FileName,true);
Screen.Cursor := crDefault;
end;
end;
finally
lssavedialog.Free;
end;
end;调用:dbgridehtoexp(dbgrideh1);
老提示这个ExpClass:TDBGridEhExportClass;有误啊!!!!!
请 hqhhh(枫叶)出来帮忙解答一下啊?
错误原因是:
Unit1.pas(33):Undeclared identifier: 'TDBGridEhExportClass'
放一个SaveDialog。 filter 设置为 :报表格式|*.xls
function xlsORtxt(dataset:tdataset;filename:string):boolean;
var
f:textfile;
tempstr:string;
i,j:integer;
begin
try
dataset.DisableControls;
assignfile(f,filename);
rewrite(f);
dataset.First;
tempstr:='';
for i:=0 to dataset.FieldCount-1 do
tempstr:=tempstr+dataset.Fields[i].FieldName+#9;
writeln(f,tempstr);
for i:=0 to dataset.RecordCount-1 do
begin
tempstr:='';
for j:=0 to dataset.Fields.Count-1 do
tempstr:=tempstr+dataset.fields[j].AsString+#9;
writeln(f,tempstr);
dataset.Next;
end;
result:=true;
closefile(f);
except
closefile(f);
result:=false;
end;
end;procedure TqueryForm.BitBtn3Click(Sender: TObject);
begin
with savedialog1 do
if execute then
begin
if xlsORtxt(proc,filename) then ///proc 就是数据源,当然也可以改为query 。 MessageBox(0,'数据已经保存!','系统提示',MB_OK+MB_ICONWARNING)
else
MessageBox(0,'数据库无法保存,请联系管理员!','系统提示',MB_OK+MB_ICONWARNING);
end;
end;