关于DELPHI导出到EXCEL的有关问题请问
关于DELPHI导出到EXCEL的问题请教
各位前辈:
我遇到一个非常郁闷的问题,在导出到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;
------解决思路----------------------
var
ExcelA:OleVariant;
ExcelA:=CreateOleObject('Excel.Application');
这个是不会自动提示呀,类都变成这个了OleVariant,它咋个提示嘛
------解决思路----------------------
一般涉及到EXCEL都是提前做好一个EXCEL模板,然后导出的时候直接将模板复制成一个新文件,然后在新文件里操作
var
ExcelA:OleVariant;
ExcelA:=CreateOleObject('Excel.Application');
使用这个实现具体的内容输入输出,很简单,如果要设计到图表的话,就比较麻烦了,因为OLEVariant是不能断点调试的
------解决思路----------------------
因为以前曾用过EXCEL导出,结果EXCEPTION太多,不是自己程序的问题导致,是微软的系统或EXCEL软件本身导致。所以,最后,还是改回用ADO导出比较稳定,建议放弃EXCEL直接导出,直接用ADO连接EXCEL表,提高程序的稳定性。
------解决思路----------------------
一直使用XLSReadWriteII4。好用。
各位前辈:
我遇到一个非常郁闷的问题,在导出到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;
------解决思路----------------------
var
ExcelA:OleVariant;
ExcelA:=CreateOleObject('Excel.Application');
这个是不会自动提示呀,类都变成这个了OleVariant,它咋个提示嘛
------解决思路----------------------
一般涉及到EXCEL都是提前做好一个EXCEL模板,然后导出的时候直接将模板复制成一个新文件,然后在新文件里操作
var
ExcelA:OleVariant;
ExcelA:=CreateOleObject('Excel.Application');
使用这个实现具体的内容输入输出,很简单,如果要设计到图表的话,就比较麻烦了,因为OLEVariant是不能断点调试的
------解决思路----------------------
因为以前曾用过EXCEL导出,结果EXCEPTION太多,不是自己程序的问题导致,是微软的系统或EXCEL软件本身导致。所以,最后,还是改回用ADO导出比较稳定,建议放弃EXCEL直接导出,直接用ADO连接EXCEL表,提高程序的稳定性。
------解决思路----------------------
一直使用XLSReadWriteII4。好用。