System.Runtime.InteropServices.COMException(0x800A03EC)

时间:2010-12-10 11:26:57

标签: .net iis com excel-interop

Microsoft.Office.Interop.Excel.WorkbookClass.SaveAs()方法在Windows Server 2003以及XP上运行正常,但在Windows Server 2008上没有。我复制它,因为它提供了所有Dll和权限

我还尝试了网上提供的所有解决方案,例如文化设置和DCOM权限。

获取以下错误:

  

System.Runtime.InteropServices.COMException(0x800A03EC):异常   来自HRESULT:0x800A03EC

at

  

Microsoft.Office.Interop.Excel.WorkbookClass.SaveAs(Object Filename,   Object FileFormat,Object Password,Object WriteResPassword,Object   ReadOnlyRecommended,Object CreateBackup,XlSaveAsAccessMode   AccessMode,Object ConflictResolution,Object AddToMru,Object   TextCodepage,Object TextVisualLayout,Object Local)

请帮忙..!

8 个答案:

答案 0 :(得分:49)

找到答案....... !!!!!!!

Microsoft的Windows Server 2008不支持官方Microsoft Office 2003 Interop。

但经过大量的排列后,与代码和搜索的组合,我们遇到了一个适合我们场景的解决方案。

解决方案是填补Windows 2003和2008维护其文件夹结构的方式之间的差异,因为Office Interop依赖于桌面文件夹进行文件打开/保存。 2003系统包含了systemmprofile下的桌面文件夹,该文件夹于2008年缺席。

因此,当我们在2008年根据相应的层次结构创建此文件夹时,如下所示;办公室Interop能够根据需要保存文件。此桌面文件夹需要在

下创建

C:\的Windows \ system32 \设置\ systemprofile

C:\的Windows \ Syswow64资料\配置\ systemprofile

这对我有用......

还要检查是否安装了.NET 1.1,因为Interop和Windows Server 2008预安装了它所需的

或者您也可以使用SaveCopyas()方法,只需将参数作为文件名字符串)

谢谢大家......!

答案 1 :(得分:11)

试试这个,因为它对我有用......

  1. 转到“开始” - > “运行”并输入“dcomcnfg”
  2. 这将打开组件服务窗口,展开“Console Root” - > “电脑” - > “DCOM配置”
  3. 在组件列表中找到“Microsoft Excel Application”。
  4. 右键单击该条目并选择“属性”
  5. 转到属性对话框中的“身份”标签。
  6. 选择“互动用户”。
  7. Last paragraph mentioned in here提供

答案 2 :(得分:5)

一些谷歌搜索显示你可能有一个损坏的文件:

http://bitterolives.blogspot.com/2009/03/excel-interop-comexception-hresult.html

并且您可以告诉excel使用CorruptLoad参数打开它,类似于......

Workbook workbook = excelApplicationObject.Workbooks.Open(path, CorruptLoad: true);

答案 3 :(得分:2)

我在尝试保存excel文件时看到同样的错误。当我使用MS Office 2003时,代码工作正常,但升级到MS Office 2007后,我开始看到这一点。每当我尝试将Excel文件保存到服务器或远程fie共享时,都会发生这种情况。

我的解决方案尽管很简陋但运作良好。我只是让程序在本地保存文件,比如用户的C:\驱动器。然后使用“System.IO.File.Copy(File,Destination,Overwrite)”方法将文件移动到服务器。然后,您可以删除C:\驱动器上的文件。

效果很好,很简单。但诚然,这不是最优雅的方法。

希望这有帮助!我在网上找到任何解决方案都遇到了很多麻烦,直到这个想法突然出现在我的脑海中。

答案 4 :(得分:1)

IIS正在运行时是权限问题 我有这个问题,我以这种方式解决了它

我去了文件夹

C:\ Windows \ System32 \ config \ SystemProfile

C:\ Windows \ SysWOW64 \ config \ SystemProfile

是受保护的系统文件夹,它们通常具有锁定功能。

右键单击 - >卡安全 - >点击编辑 - >添加未加载的“Autenticadet用户”并分配权限。

此时一切都已解决,如果仍有问题,请尝试将所有权限授予“Everyone”

答案 5 :(得分:0)

对于所有那些仍然遇到这个问题的人,我只花了2天时间追踪这个血腥的东西。 当数据集中没有行时,我得到了同样的错误。 看似很明显,但错误信息非常模糊,因此2天。

答案 6 :(得分:0)

在我的情况下,问题是将标头样式设置为“标头1”,但由于不是英语办公室,因此出现错误的Word中不存在该样式。

答案 7 :(得分:0)

由于 excel 文件的路径,我遇到了这个问题,每当我尝试打开 excel 文件时,我都会收到错误消息(即我的 excel 文件的路径很长,如 C:\Users\Blabla\Blabla\MyVeryLongFolderHierarchyPath\ MyExcelFile.xlsx)

解决方案是将我的 excel 文件直接放在较短的文件路径(如 C:\MyExcelFile.xlsx)下。我无法相信由于 2021 年的长文件路径会出现如此愚蠢的问题