【发布时间】:2012-07-29 09:13:03
【问题描述】:
我正在尝试自动化 Excel,以便它在服务器上生成报告,然后在请求时通过电子邮件将其发送给用户。我遇到的问题是,一旦我创建了一个 excel 文档并将数据写入其中,即使发出 pXL->Quit(); 程序也不会退出;命令。 这就是我“关闭”excel的说明:
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 吗?
我知道 Microsoft 不支持服务器端 Excel 自动化,但我希望能找到解决办法。 我也知道你可以简单地
WinExec("taskkill /F /IM \"excel.exe\"",0);
这完全杀死了 Excel,但我担心该应用程序的未来会生成相当多的 Excel 应用程序,在这种情况下,我将不得不单独杀死 Excel,这一切都会从那里变得一团糟......
任何帮助将不胜感激!
【问题讨论】:
-
pXL、pXLWSs 和 PXLWS 有哪些数据类型?
-
另外,检查stackoverflow.com/q/4852135/25507 看看这是否适用于您的情况。
-
它们是 COM 接口。 TComInterface<:_application>pXL;
-
我以前也去过那个页面
-
@JoshKelley - 所以你有没有听说过或看到什么新的东西,因为我没有,我仍然有这个问题......
标签: c++ excel automation c++builder