关于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。好用。