我通过OLE自动化在Excel工作簿中填充单元格的Windows服务。
保存过程不起作用,永远不会保存文件。但是,在GUI应用程序中完成后,保存过程将起作用。
服务用户是管理员帐户。我怀疑与桌面的交互。
任何想法?
最佳答案
不要这样寻找其他解决方案。除工作站桌面会话之外的任何地方的Office软件的Microsoft does not support or recommend OLE自动化。我不能说比他们直接说的更好的东西,所以这是建议(上面的链接更详细):
所有当前版本的Microsoft Office都经过设计,测试和配置,可以作为最终用户产品在客户端工作站上运行。他们采用交互式桌面和用户个人资料。它们没有提供满足旨在无人值守运行的服务器端组件的需要所必需的重新输入或安全级别。
Microsoft当前不建议并且不支持通过任何无人参与的非交互客户端应用程序或组件(包括ASP,ASP.NET,DCOM和NT Services)使Microsoft Office应用程序自动化,因为Office可能表现出不稳定的行为和/在此环境中运行Office时会死锁。
如果要构建在服务器端上下文中运行的解决方案,则应尝试使用对无人值守执行安全的组件。或者,您应该尝试找到允许至少部分代码在客户端运行的替代方法。如果使用服务器端解决方案中的Office应用程序,则该应用程序将缺少许多成功运行所需的功能。此外,您将承担整体解决方案稳定性的风险。
如果您需要服务来存储数据,则数据库可能是一个不错的选择。任何需要excel电子表格中数据的用户都可以从数据库中填充其文档。您甚至可以设置模板文档来自动执行此操作。