使用workbook.save保存excel时从HRESULT获取异常:0x800A03EC?

时间:2015-08-04 12:54:18

标签: asp.net windows-server-2008-r2 excel-2013

我的项目有问题。我想在Windows 2008服务器上的Asp.NET C#中将数据写入现有的excel文件。我在我的本地计算机上创建了项目并且它正常工作但是当我在服务器上发布时出现此错误: 错误

:System.Runtime.InteropServices.COMException (0x800A03EC): 
Exception from HRESULT: 0x800A03EC at Microsoft.Office.Interop.Excel._Workbook.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) 
at Stock.EService.ReadExistingExcel() 

这是保存文件代码:

mWorkBook.SaveAs(path3, Excel.XlFileFormat.xlWorkbookNormal, Missing.Value, Missing.Value, false, false, Excel.XlSaveAsAccessMode.xlNoChange,Excel.XlSaveConflictResolution.xlUserResolution, true,Missing.Value, Missing.Value, Missing.Value);

mWorkBook.Close(true, Missing.Value,Missing.Value);

如何解决我的问题。我在服务器中创建一个文件并完全控制,但我的项目不起作用。 请帮帮我。

2 个答案:

答案 0 :(得分:0)

我认为这可能是由本地计算机与服务器之间的Excel版本差异引起的。

答案 1 :(得分:0)

这个问题困扰了我一段时间。我在开发环境中使用Excel 14.0,在生产环境中使用Excel 15.0。

以下是我尝试解决此问题的大多数事情的清单,但是请记住,可能是为我解决了这件事的全部或全部。

  1. 开始->运行-> lusrmgr.msc->将服务帐户添加到管理员组。

  2. 组件服务->计算机->我的电脑->属性-> COM安全->将用户添加到所有权限。

  3. 组件服务->计算机->我的电脑-> DCOM配置-> Microsoft Excel应用程序->属性->安全->将用户添加到所有权限。

  4. 组件服务->计算机->我的电脑-> DCOM配置-> Windows管理和工具->属性->安全->将用户添加到所有权限。

  5. Excel->文件->选项->信任中心->受保护的视图->取消选中所有3个框。

  6. Excel->文件->选项->信任中心-> ActiveX设置->启用所有控件并取消选中安全模式。

  7. Excel->文件->选项->信任中心->宏设置->启用所有宏->信任对VBA项目对象模型的访问。

  8. Excel->文件->选项->信任中心->文件阻止设置->选择在受保护的视图中打开选定的文件类型。

  9. Excel->文件->选项->信任中心->文件阻止设置->取消选中所有内容。

  10. Excel->文件->选项->信任中心->外部内容->启用所有数据连接;对所有工作簿链接启用自动更新。

  11. Excel->文件->选项->信任中心->受信任的位置->选中“允许受信任的位置+添加C:\和任何UNC路径+子目录”。

  12. Excel->文件->选项->高级->选中“忽略使用动态数据交换(DDE)的其他应用程序”

  13. 在代码中,而不是使用.SaveCopyAs,而是将.SaveAs与xlsx文件的Excel.XlFileFormat.xlWorkbookDefault一起使用,并将Excel.XlFileFormat.xlOpenXMLWorkbookMacroEnabled与启用宏的工作簿一起使用。