gpt4 book ai didi

excel - 尝试使用 Microsoft.Office.Interop.Excel.Workbooks.Open() 打开 Excel 时出现异常 HResult 0x800a03ec

转载 作者:行者123 更新时间:2023-12-02 07:52:29 25 4
gpt4 key购买 nike

如果我尝试在客户端计算机上打开 Excel 文件,则会引发以下异常:

Exception from HRESULT: 0x800A03EC

内部异常:(空)

堆栈跟踪:

   at Microsoft.Office.Interop.Excel.Workbooks.Open(String Filename, Object UpdateLinks, Object ReadOnly, Object Format, Object Password, Object WriteResPassword, Object IgnoreReadOnlyRecommended, Object Origin, Object Delimiter, Object Editable, Object Notify, Object Converter, Object AddToMru, Object Local, Object CorruptLoad)
at (own assembly)

这个 HResult 是一个非常通用的错误,我无法通过它找到任何有用的信息。

我的设置:

WCF 服务在 Windows 服务内运行。完全相同的安装程序正在其他三台机器上运行。

我可以排除的事情:

  • 错误的道路
  • 文件不存在
  • 文件已损坏
  • 文件被写保护

我做过的事情:

  • 创建了桌面文件夹,如下所示(第二个答案)https://social.msdn.microsoft.com/Forums/vstudio/en-US/4d6c383a-94eb-4898-9d22-aa4bb69be25b/
  • 授予桌面文件夹“Everyone”或“Jeder”权限(“Jeder”相当于德语中的“Everyone”)
  • 使用当前活跃用户启动服务
  • 按照 Heidi2 的建议更改了 Excel 的 DCOM 配置(请参阅上面的链接)
  • 从 Office 365 更改为 Office Professional Plus
  • 尝试打开文件时区域设置设置为 en-US
  • 手动打开应该打开的文件:Excel 中没有错误/警告/用户对话框
  • 在目标计算机上安装了英语 - 美国
  • 编写了一个非 WCF 服务,该服务启动执行互操作请求的 dll
  • 编写了一个控制台应用程序,用于启动执行互操作请求的 dll

一些观察:

  • 如果我删除桌面文件夹(请参阅我的第一个“我所做的事情”),我会收到此处描述并解决的错误:Microsoft Office Excel cannot access the file 'c:\inetpub\wwwroot\Timesheet\App_Data\Template.xlsx'
  • Excel 在任务管理器中打开了一小段时间,同时 dll 尝试打开 Excel 文件
  • 虽然我安装了 Office 365,但任务管理器中会出现 Office Click-Once 任务,有时会卡住应用程序。这就是我改用 Professional Plus 的原因
  • 如果事件语言设置为美国英语,则不再抛出此错误;但本应由 Interop 渲染的图像却呈现为空白

我在这里缺少什么?

最佳答案

抱歉 - 我知道这是一个间接答案,但我建议您继续。我个人在 Excel Interop 服务(ASP.NET 应用程序)方面有非常糟糕的经历。据我所知,微软does not recommend Interop server automation .

即使您解决了这个问题,您也可能会遇到内存泄漏、性能等问题。在我之前的项目中,我们在部署之前一直在使用 Excel 互操作自动化。我们偶然发现了很多问题(Excel Interop 进程未正确关闭等),以至于我们不得不将所有内容重写为 OpenXML。

如果可能,请使用新的 OpenXML 格式。有一个 ClosedXML library这使得使用变得非常容易。

为什么选择 OpenXML 与 Interop?:

  1. 效率(OpenXML 是轻量级的)

  2. 无内存泄漏风险

  3. 易于使用

关于excel - 尝试使用 Microsoft.Office.Interop.Excel.Workbooks.Open() 打开 Excel 时出现异常 HResult 0x800a03ec,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30078729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com