如果我尝试在客户端计算机上打开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服务。完全相同的安装程序正在其他三台机器上运行。
我可以排除的事情:
我做过的事情:
一些观察:
我在这里错过了什么?
对不起 - 我知道这是一个间接的答案,虽然我建议你继续。我个人对Excel Interop服务(ASP.NET应用程序)有很糟糕的经验。我知道微软does not recommend Interop server automation。
即使你解决了这个问题,你也可能会遇到内存泄漏,性能等问题。在我以前的项目中,我们使用Excel互操作自动化进行了部署。我们偶然发现了许多问题(Excel Interop进程未正确关闭等),我们不得不将所有内容重写为OpenXML。
如果可能,请使用新的OpenXML格式。有一个ClosedXML library使得工作非常容易。
为什么OpenXML与Interop ?:
在尝试此解决方案之前,请确保您已阅读问题中的“我做过的事情”段落(并尝试了适用于您的内容)
在打开文件时抛出了例外;在生成Excel的机器上,生成的文件无效。
解决方案是更改数字的格式。
进入系统配置 - >时间,语言和区域 - >语言
点击突出显示的超链接
打开高级设置
将分隔符更改为“。”