如何将DBGRID数据连同列名保存到EXCEL文件中?
解决方案 »
- 怎么在串口返回的数据中添加中文说明
- ADOQuery 如呵快速定位 记录顺序为 4,28,400, 的记录
- @@@@@@@@@@@@@@@@@@一个简单的问题◎◎◎◎◎◎◎◎◎◎◎
- Delphi6 的Decision Cube控件对SQL Server的支持是不是有Bug?
- 怎么把Datetimepicer的值,像DBedit一样简单的送道数据库中去!
- 用DELPHI编程如何实现 禁止对文件的存储及删除? 要用到什么消息?
- 局域网内复制文件
- 请问如何用Delphi在Word中生成表格?
- 300分求助!!!我同时打开20个adoquery,结果win2000报错虚内存不够:(只好另想办法了
- 请问如何将一个已激活的ADOQuery1赋给另外一个AdoQuery2,使AdoQery2完全拥有AdoQuery1的数据,并与AdoQuery1相分离。
- 求救,关于ActiveX的问题!
- Ora-06413:连接未打开
procedure TForm1.EXCEL2Click(Sender: TObject);
var
eclApp,WorkBook:Variant;//声明为OLE Automation 对象
xlsFileName:string;
i,j,n:integer;
begin
if SaveDialog1.Execute then
begin
xlsFileName:=SaveDialog1.FileName;
if fileexists(SaveDialog1.FileName) then DeleteFile(SaveDialog1.FileName);
try
//创建OLE对象Excel Application与 WorkBook
eclApp:=CreateOleObject('Excel.Application');
WorkBook:=CreateOleobject('Excel.Sheet');
except
ShowMessage('您的机器里未安装Microsoft Excel。');
Exit;
end;
try Screen.Cursor:=crHourGlass;
workBook:=eclApp.workBooks.Add;
i:=1; //EXECL表行号
n:=0;//query字段N序号
Query1.First;
j:=1;
for n:=0 to Query1.FieldCount -1 do
begin
eclApp.Cells(i,j):=Query1.fields[n].DisplayLabel;
j:=j+1;
end;
i:=2; //EXECL表行号
n:=0;//query字段N序号
while not Query1.Eof do begin
j:=1;//EXECL表列号
for n:=0 to Query1.FieldCount -1 do
begin
eclApp.Cells(i,j):=Query1.fields[n].AsString;
j:=j+1;
end;
Query1.Next;
i:=i+1;
end; WorkBook.SaveAs(xlsFileName);
Application.MessageBox('操作在没有警告的情况下正常结束!','完成',mb_ok+mb_iconinformation);
WorkBook.close;
eclApp.Quit;//退出Excel Application
eclApp:=Unassigned;//释放VARIANT变量
Screen.Cursor:=crdefault;
except
ShowMessage('不能正确操作Excel文件。可能是该文件已被其他程序打开,或系统错误。');
WorkBook.close;
eclApp.Quit;
//释放VARIANT变量
eclApp:=Unassigned;
end;
END;
END;