有关Excel退出(50分)

  • 主题发起人 主题发起人 citicwjx
  • 开始时间 开始时间
C

citicwjx

Unregistered / Unconfirmed
GUEST, unregistred user!
我用server控件编写程序时,当向Excel写完数据后,我用ExcelApplication1.Disconnect关闭
应用程序与Excel的连接,弹出的Excel程序由用户关闭。最后我退出应用程序,这时我发现win98
的进程列表中居然有一个Excel进程,我结束该任务,就发生死机。开始我认为可能是我机器的
问题,所以将程序拷到别的机器上运行,仍然出现此问题,不知何故。现向各位高手讨教讨教,
谢了。
 
我也遇到过这样的问题,我是这么理解的,当Delphi调用Excel(ExcelApplication1.Connect)
时,系统先寻找内存中是否已经有Excel对象运行,如果有,则不再创建ExcelApplication对象
,如果没有,则Delphi激发系统创建一个ExcelApplication对象,这个过程你可以先启动Excel,
然后再调用ExcelApplication1.Connect,可以看到这个现象。
至于当ExcelApplication1.Disconnect时为什么没有关闭Excel,我想可能是Excel一旦被创建好后,
它就是一个在内存运行的应用程序,这个时候有点应验了MS当初的DDE(动态数据交换),它只能是
一个数据传递和交换过程,而不能再简单的关闭ExcelApplication1,如果非要做,那你可以使用
ExcelApplication1.Destroy,不过我使用后不理想。
我建议的做法是:如果你只是调用Excel制作表格,那么你不必要要用户存储当前Excel文档,那么
直接进入到Excel的打印预览状态(excelsheet.PrintPreview;)然后关闭已经打开的文档
(excelapp.ActiveWorkbook.Close(True,filename,true,0);),否则建议你预先保存文档
(ExcelApp.ActiveWorkbook.SaveAs(filename,xlNormal,'', '', False, false,xlExclusive,xlLocalSessionChanges,true,false,false,0);)
然后直接关闭文档(excelapp.ActiveWorkbook.Close(True,filename,true,0);),这也只是一个建议性
的解决办法,你可以试试看!
可以和我联系在具体讨论(huoyun@dl.dq.cnpc.com.cn)
 
不会呀,我的ExcelApplication1.Disconnect已经关掉excel了。不过我是win 2000
 
我也是Win2000,你指的关闭只是关闭了表面上的窗口,实际上内存里的对象仍然存在,就是
说只是Disconnect,而不是Destroy!
 
procedure TForm1.Button1Click(Sender: TObject);
begin
ExcelApplication1.Connect;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ExcelApplication1.Disconnect;
end;
button1按了之后可在进程列表中找到excel,button2按了之后就找不到了。
 
接受答案了.
 
我也遇上过这问题,你可以把EXECL APPLICTION的

AutoQuit的值选会True

我运行程序的开始处写出

ExcelApplication1.Disconnect;

我曾尝试成功!!
 
后退
顶部