关于DELPHI导出到EXCEL的问题请教

changfenglee 2015-01-13 05:11:29
各位前辈:
我遇到一个非常郁闷的问题,在导出到EXCEL的时候,如果导出时没有打开其它EXCEL文档一切正常,但如果已经打开了EXCEL文档的话,导出的数据全部加在原来打开的文档第一个表中,新建的工作簿里面什么也没有,下面是代码,这个该如何改啊,请前辈们帮下忙,顺便说明一下,谢谢

procedure TFrmCanPingZiLiao.Button5Click(Sender: TObject);
var
ExcelApp:TExcelApplication;
ExcelBook:TExcelWorkbook;
ExcelSheet:TExcelWorksheet;
i:Integer;

begin
ExcelApp:=TExcelApplication.Create(Application);
ExcelBook:=TExcelWorkbook.Create(Application);
ExcelSheet:=TExcelWorksheet.Create(Application);

ExcelApp.Connect;
ExcelApp.Workbooks.Add(EmptyParam,0);
ExcelBook.ConnectTo(ExcelApp.Workbooks[1]);
ExcelSheet.ConnectTo(ExcelBook.Worksheets[1] as _WorkSheet);


qry1.First;

for i:=0 to qry1.RecordCount -1 do
begin
ExcelSheet.Cells.item[i+1,1]:=qry1.fieldbyname('产品料号').AsString;
qry1.Next;
end;

ExcelApp.Disconnect;
ExcelApp.Quit;
ExcelApp.Free;
ExcelBook.Free;
ExcelSheet.Free;
end;
...全文
335 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
changfenglee 2015-01-21
  • 打赏
  • 举报
回复
非常感谢各位大神的帮忙,小弟在此谢过了
fullhappy 2015-01-20
  • 打赏
  • 举报
回复
cxGrid确实好用,代码如下: use cxExportGrid4Link procedure btnExportClick(Sender: TObject); var FileName: String; begin SaveDialog1.Filter := 'Microsoft Excel 文件|*.xls'; if not SaveDialog1.Execute then exit; FileName := SaveDialog1.FileName; ExportGrid4ToExcel(FileName, cxGridExp); end;
fullhappy 2015-01-20
  • 打赏
  • 举报
回复
cxGrid确实好用,代码如下:
qfitsoft 2015-01-20
  • 打赏
  • 举报
回复
你可以试下楼上说的cxGrid,打开的也没关系
lyhoo163 2015-01-18
  • 打赏
  • 举报
回复
一直使用XLSReadWriteII4。好用。
rcyboom 2015-01-17
  • 打赏
  • 举报
回复
XLSReadWriteII 就是一个非常好的控件,或者直接用 TCXGRID的导出功能。
changfenglee 2015-01-17
  • 打赏
  • 举报
回复
导出EXCEL有哪些第三方控件比较好用啊?
zbdzjx 2015-01-16
  • 打赏
  • 举报
回复
之前遇到过的,当时是用D7开发的,导出Excel时,只会导出到指定的Excel中,即使切换到另一个Excel也没影响。后来用D2010,,就不行了,只能导出到当前活动的Excel中。 在D7的程序中,在导出Excel时,可以用鼠标滚轮移动Excel中的显示位置。在D2010的程序中,则不行,一移动就会报错,不再导出了。
changfenglee 2015-01-16
  • 打赏
  • 举报
回复
目前暂时使用的1楼这种方式,但最开始说的问题一直没有明白是为什么,希望高手们看到能指点一下。
lyhoo163 2015-01-16
  • 打赏
  • 举报
回复
引用 4 楼 lyhoo163 的回复:
建议使用率三方控件,方便快捷。
还是使用第三方控件,方便快捷。
doloopcn 2015-01-15
  • 打赏
  • 举报
回复
因为以前曾用过EXCEL导出,结果EXCEPTION太多,不是自己程序的问题导致,是微软的系统或EXCEL软件本身导致。所以,最后,还是改回用ADO导出比较稳定,建议放弃EXCEL直接导出,直接用ADO连接EXCEL表,提高程序的稳定性。
changfenglee 2015-01-14
  • 打赏
  • 举报
回复
因为要定制格式,使用第三方控件可能不能实现要求,现在导出是没问题,但前提是导出时,不能有任何其它EXCEL文档打开,否则就会把资料导到打开的文档中,相当郁闷啊
踏雪无痕 2015-01-14
  • 打赏
  • 举报
回复
我是使用的第三方控件,我猜你的问题太难了
lyhoo163 2015-01-14
  • 打赏
  • 举报
回复
建议使用率三方控件,方便快捷。
nebula845026 2015-01-14
  • 打赏
  • 举报
回复
一般涉及到EXCEL都是提前做好一个EXCEL模板,然后导出的时候直接将模板复制成一个新文件,然后在新文件里操作 var ExcelA:OleVariant; ExcelA:=CreateOleObject('Excel.Application'); 使用这个实现具体的内容输入输出,很简单,如果要设计到图表的话,就比较麻烦了,因为OLEVariant是不能断点调试的
windyhero 2015-01-13
  • 打赏
  • 举报
回复
ExcelApp.Save; ExcelApp.Disconnect; ExcelApp.Quit; 在 ExcelApp.Disconnect; 前面添加保存代码
windyhero 2015-01-13
  • 打赏
  • 举报
回复
var ExcelA:OleVariant; ExcelA:=CreateOleObject('Excel.Application'); 这个是不会自动提示呀,类都变成这个了OleVariant,它咋个提示嘛
changfenglee 2015-01-13
  • 打赏
  • 举报
回复
别沉下去了,这个问题是太难还是太简单,大家不屑回答?我查了很多资料,不清楚该如何解决这个问题。 如果采用下面这种方式,又不自动提示代码,好郁闷,求大侠指点啊 var ExcelA:OleVariant; ExcelA:=CreateOleObject('Excel.Application'); 在这句以后的所有代码都不会自动提示了,也不知道为什么?

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧