【发布时间】:2023-04-01 22:10:01
【问题描述】:
如果我尝试在客户端计算机上打开 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 是一个非常通用的错误,我找不到任何有用的信息。
我的设置:
在 Windows 服务中运行的 WCF 服务。完全相同的安装程序正在其他三台机器上运行。
我可以排除的事情:
- 路径错误
- 文件不存在
- 文件已损坏
- 文件被写保护
我做过的事情:
- 创建了桌面文件夹,如下所示(第二个答案)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'
- 当 dll 尝试打开 Excel 文件时,Excel 在任务管理器中打开了一小段时间
- 虽然我安装了 Office 365,但 Office Click-Once 任务在任务管理器中弹出,有时会冻结应用程序。这就是我改用 Professional Plus 的原因
- 如果活动语言设置为美国英语,则不再抛出此错误;但是应该由 Interop 渲染的图像被渲染为空白
我在这里错过了什么?
【问题讨论】:
标签: excel wcf windows-services interop