我试图自动化Excel,以便它在服务器上生成报告,然后在请求时通过电子邮件将此报告发送给用户。我遇到的问题是,一旦我创建了一个excel文档并将数据写入其中,程序即使在发出pXL-> Quit()后也不会退出。命令。 这就是我的“关闭”指令擅长:Embarcadero C++构建器Excel自动化C++不会退出
pXL->Workbooks->Close(LCID(LOCALE_USER_DEFAULT));
pXLWSs.Reset(); //Releases Worksheets
pXLWS.Reset();//Releases Workbooks
pXL->Quit();// "Quits" Excel ---> This does not quit excel
pXL.Reset();//Release Excel application?
CoUninitialize();//Uninitialise COMS
我看了好几篇文章和博客关于这个具体问题,似乎这是因为我不释放与Excel相关联的所有COMS。所以我尝试了几次不初始化COMS。我发出了
CoUninitialize();
4次,这工作!但令我感到失望的是,它一直无法工作。
有谁知道如何优雅地关闭Excel?
我知道微软不支持服务器端Excel自动化,但我希望找到解决办法。 我也知道,你可以简单地
WinExec("taskkill /F /IM \"excel.exe\"",0);
其完全杀死的Excel,但我很担心什么时候会产生相当数量的Excel应用程序的未来在这种情况下,我会杀了Excel的单独和它只是从那里得到凌乱....
任何帮助将不胜感激!
pXL,pXLWSs和PXLWS的数据类型是什么? – 2012-07-31 15:03:08
此外,请检查http://stackoverflow.com/q/4852135/25507,看看是否适用于您的情况。 – 2012-07-31 15:07:56
它们是COM接口。 TComInterface PXL; –
dRagonsRage
2012-07-31 15:09:10