【问题标题】:Excel OLE automation in a Windows serviceWindows 服务中的 Excel OLE 自动化
【发布时间】:2020-02-19 16:24:03
【问题描述】:

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

保存过程不工作,文件永远不会保存。但在 GUI 应用程序中完成时,保存过程可以正常工作。

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

有什么想法吗?

【问题讨论】:

  • 有什么代码可以看吗?
  • 你有异常吗?
  • 你使用绝对路径吗?您是否检查过该服务是否可以写入该目录?
  • 可以通过ADO/ODBC编写Excel文件
  • Nasreddine:没有什么可以轻松访问的。 Olivier:也不例外,文件没有保存。用户有权在目标文件夹上写入。 whosrdaddy:是的,我知道,但我需要遵循客户外部模板。

标签: excel delphi ole


【解决方案1】:

不要这样做。寻找另一个解决方案。 Microsoft does not support or recommend Office 软件的 OLE 自动化,可从工作站桌面会话以外的任何地方进行。我不能比他们直接说的更好解释,所以这里是建议(上面的链接更详细):

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

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

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

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

【讨论】:

  • Tnx J... 至少很清楚!数据是从我们的数据库中提取的,它应该发送给需要 Excel 文件的外部客户。
【解决方案2】:

我遇到了同样的问题,以管理员用户身份运行 Delphi 软件作为服务,它在读/写过程中给了我很多错误,例如 Workbook 类的 SaveAs 方法失败

读取/保存的解决方案是在下面创建两个文件夹:

C:\Windows\System32\config\systemprofile
C:\Windows\SysWOW64\config\systemprofile\

根本没有多大意义,但它确实有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    • 2011-01-31
    相关资源
    最近更新 更多