我想将DBGRIDEH中的数据导出为EXCEL文件,用以下指令出现错误,
SaveDBGridEhToExportFile(TDBGridEhExportAsXls,DBGridEh1,savedialog1.filename,false);
是不是要添加什么模块?
谢谢
SaveDBGridEhToExportFile(TDBGridEhExportAsXls,DBGridEh1,savedialog1.filename,false);
是不是要添加什么模块?
谢谢
解决方案 »
- 请朋友解决拦路虎--DBNavigator的使用,当连接上datesourse时,按扭怎么变成灰色
- case Integer of是什么意思?Integer不是整型吗?怎么可以拿来case?谢
- 求一个提取url字符串当中最后一个“/”后面的字符串,也就是页面文件名称。
- 请问怎样用DecisionQuery连结access数据库
- 查询的问题
- access 问题
- delphi断点问题
- 特级菜!!
- 如何把一个二进制文件编译到程序当中
- 哪里有DELPHI6安装程序制作的操作讲解,谢谢
- 为什么没有人开发脱离操作系统的应用程序?
- 我自己照例程编了两个简单的dll,在应用程序中调用这两个dll,但是应用程序中的button控件不起作用。
DataSetToExcel(DM.q_sjcx,1,true,title);
2、调用
unit UExcelTools;interfaceuses
classes, comctrls, stdctrls, windows, Dialogs, controls, SysUtils,
Db,forms,DBClient,ComObj;//把数据集导入ExcelSheet的核心函数
{function DataSetToExcelSheet
(
DataSet :TDataSet;
FieldTagMax :Integer; // 字段的Tag值如果大于这个值,就不导出到Excel
Sheet :OleVariant
): Boolean;}
Function DataSetToExcelSheet(DataSet:TDataSet;FieldTagMax:Integer;Sheet:OleVariant;strTitle:string): Boolean;
//实际使用的函数,内部调用了DataSetToExcelSheet,在外面加入UI接口和错误处理
{function DataSetToExcel
(
DataSet :TDataSet; // 要转换的数据集
FieldTagMax :Integer; // 字段的Tag值如果大于这个值,就不导出到Excel
Visible :Boolean; // 是否让做转换工作的Excel可见
ExcelFileName:String='' // Excel文件名,*.xls
): Boolean;}Function DataSetToExcel(
DataSet:TDataSet;FieldTagMax:Integer;
Visible:Boolean;ExcelFileName:String='';strTitle:string=''): Boolean;
implementationFunction DataSetToExcelSheet(DataSet:TDataSet;FieldTagMax:Integer;Sheet:OleVariant;strTitle:string): Boolean;
var
Row,Col,FieldIndex :Integer;
BK:TBookMark;
begin
Result := False;
if not Dataset.Active then exit;
BK:=DataSet.GetBookMark;
DataSet.DisableControls;
Sheet.Activate;
try
// 列标题
Row:=2;
Col:=1;
for FieldIndex:=0 to DataSet.FieldCount-1 do
begin
//if DataSet.Fields[FieldIndex].Tag <= FieldTagMax then
if DataSet.Fields[FieldIndex].Tag >= FieldTagMax then
begin
Sheet.Cells(Row,Col) :=DataSet.Fields[FieldIndex].DisplayLabel;
Inc(Col);
end;
end;
// 表内容
DataSet.First;
while Not DataSet.Eof do
begin
Row:=Row+1;
Col:=1;
for FieldIndex:=0 to DataSet.FieldCount-1 do
begin
//if DataSet.Fields[FieldIndex].Tag <= FieldTagMax then
if DataSet.Fields[FieldIndex].Tag >= FieldTagMax then
begin
Sheet.Cells(Row,Col):=DataSet.Fields[FieldIndex].AsString;
Inc(Col);
end;
end;
DataSet.Next;
end;
Sheet.Cells(1,int(Col/2)-1):=strTitle;
Result := True;
finally
DataSet.GotoBookMark(BK);
DataSet.EnableControls;
end;
end;
Function DataSetToExcel(
DataSet:TDataSet;FieldTagMax:Integer;
Visible:Boolean;ExcelFileName:String='';strTitle:string=''): Boolean;
var
ExcelObj, Excel, WorkBook, Sheet: OleVariant;
OldCursor:TCursor;
SaveDialog:TSaveDialog;
begin
Result := False;
if not Dataset.Active then exit; OldCursor:=Screen.Cursor;
Screen.Cursor:=crHourGlass; try
ExcelObj := CreateOleObject('Excel.Sheet');
Excel := ExcelObj.Application;
Excel.Visible := Visible ;
WorkBook := Excel.Workbooks.Add ;
Sheet:= WorkBook.Sheets[1];
except
MessageBox(GetActiveWindow,'无法调用Mircorsoft Excel! '+chr(13)+chr(10)+
'请检查是否安装了Mircorsoft Excel。','提示',MB_OK+MB_ICONINFORMATION);
Screen.Cursor:=OldCursor;
Exit;
end; Result:=DataSetToExcelSheet(DataSet,FieldTagMax,Sheet,strTitle) ;
if Result then
if Not Visible then
begin
if ExcelFileName<>''
then WorkBook.SaveAs(FileName:=ExcelFileName)
else begin
SaveDialog:=TSaveDialog.Create(Nil);
SaveDialog.Filter := 'Microsoft Excel 文件|*.xls';
Result:=SaveDialog.Execute;
UpdateWindow(GetActiveWindow);
if Result then
WorkBook.SaveAs(FileName:=SaveDialog.FileName);
SaveDialog.Free;
end;
Excel.Quit;
end;
Screen.Cursor:=OldCursor;
end;end.