Windows 服务中的 Excel OLE 自动化

Lau*_*sti 2 delphi excel ole

我有一个 Windows 服务通过 OLE 自动化填充 Excel 工作簿中的单元格。

保存过程不起作用,文件永远不会保存。但是当在 GUI 应用程序中完成时,保存过程会起作用。

服务用户是管理员帐户。我怀疑与桌面的交互。

任何的想法?

J..*_*... 6

不要这样做。寻找另一个解决方案。Microsoft不支持或建议从工作站桌面会话以外的任何地方实现 Office 软件的 OLE 自动化。我无法解释比他们直接说的更好,所以这是建议(上面的链接更详细):

Microsoft Office 的所有当前版本都经过设计、测试和配置,以在客户端工作站上作为最终用户产品运行。他们假设一个交互式桌面和用户配置文件。它们不提供满足设计为无人值守运行的服务器端组件的需要所必需的重入或安全级别。

Microsoft 当前不建议也不支持从任何无人参与的非交互式客户端应用程序或组件(包括 ASP、ASP.NET、DCOM 和 NT 服务)自动化 Microsoft Office 应用程序,因为 Office 可能表现出不稳定的行为和/或在此环境中运行 Office 时出现死锁。

如果您正在构建一个在服务器端上下文中运行的解决方案,您应该尝试使用已经过安全无人值守执行的组件。或者,您应该尝试找到至少允许部分代码在客户端运行的替代方案。如果您使用服务器端解决方案中的 Office 应用程序,该应用程序将缺乏许多成功运行所需的功能。此外,您将面临整体解决方案稳定性的风险。

如果您需要服务来存储数据,数据库可能是一个不错的选择。任何需要 Excel 电子表格中的数据的用户都可以从数据库中填充他们的文档。您甚至可以设置模板文档来自动执行此操作。