单独导出查询出来的数据已经可以了,但是我想在导出之前加上报表名称和查询条件,并一起导入到EXCEL,因为我不是一条条导出的,所以不知道该如何处理,请做过类似处理的兄弟姐妹告之小弟,代码如下:
procedure TfmRep1.spbExportClick(Sender: TObject);
var
ExpClass: TDBGridEhExportClass;
Ext: string;
begin savedialog.FileName := '营业报表;
if savedialog.Execute then
begin
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;
try
if Copy(ReverseString(savedialog.FileName), 1, 3) = 'slx' then
SaveDBGridEhToExportFile(TDBGridEhExportAsHTML, dbgrideh, savedialog.FileName, true)
else
SaveDBGridEhToExportFile(ExpClass, dbgrideh, savedialog.FileName, true);
showmessage('导出成功!');
except
showMessage('保存失败!');
end;
end; end;end;
procedure TfmRep1.spbExportClick(Sender: TObject);
var
ExpClass: TDBGridEhExportClass;
Ext: string;
begin savedialog.FileName := '营业报表;
if savedialog.Execute then
begin
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;
try
if Copy(ReverseString(savedialog.FileName), 1, 3) = 'slx' then
SaveDBGridEhToExportFile(TDBGridEhExportAsHTML, dbgrideh, savedialog.FileName, true)
else
SaveDBGridEhToExportFile(ExpClass, dbgrideh, savedialog.FileName, true);
showmessage('导出成功!');
except
showMessage('保存失败!');
end;
end; end;end;
var ExcelApp: Variant;
begin
if DBGrid1.DataSource.DataSet.IsEmpty then
begin
showmessage('没有数据可以导出!');
exit;
end;
ExcelApp := CreateOleObject( 'Excel.Application' );
ExcelApp.Visible := True;
ExcelApp.WorkBooks.Add(1);
ExcelApp.Workbooks[1].WorkSheets[1].Name := 'sheet页的名称';
exlDC(ExcelApp);
end;procedure Ttcjl.exlDC(XLApp: Variant);
var
x,i: Integer;
ExcelSheet: Variant;
begin
ExcelSheet := XLApp.Workbooks[1].WorkSheets[1];
for i:=1 to DBGrid1.Columns.Count do
with DBGrid1.Columns[i-1] do
begin
ExcelSheet.Columns[i].ColumnWidth:=DBGrid1.DataSource.DataSet.FindField(FieldName).DisplayWidth;
ExcelSheet.Cells(3, i):=Title.Caption;
end;
ExcelSheet.Cells(1, 2):='第1行第2格的内容';
ExcelSheet.Cells(2, 2):= '第2行第2格的内容';
x:= 4;
with DBgrid1.DataSource.DataSet do
begin
first;
While Not EOF do
begin
for i:=1 to DBGrid1.Columns.Count do
with DBGrid1.Columns[i-1] do
begin
ExcelSheet.Cells(x, i):=''''+FindField(FieldName).AsString;
end;
Next;
x:= x + 1 ;
end;
end;
ExcelSheet.Cells(x, 1):= '合计';
ExcelSheet.Cells(x, 2):= '共'+'条记录';
ExcelSheet.Cells(x, 3):= '用户数量:';
ExcelSheet.Cells(x, 5):= '设备数量:';
x:=x+1;
ExcelSheet.Cells(x, 4):= '统计人:'+ CZYxm;
ExcelSheet.Cells(x, 6):= '统计时间'+DateToStr(now);end;
这样的话,DBGRIDEH多表头就出不来了吧?