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

问题描述 投票:1回答:2

我的项目中有问题。我想将数据写入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);

如何解决我的问题。我在服务器中创建了一个文件并拥有完全控制权,但是我的项目无法正常工作。请帮助我。

asp.net windows-server-2008-r2 excel-2013
2个回答
0
投票

我认为这可能是由于本地计算机和服务器之间的Excel版本不同引起的。


0
投票

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

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

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

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

  3. [组件服务->计算机->我的电脑-> DCOM Config-> 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,对于xlsx文件,请对Excel.XlFileFormat.xlWorkbookDefault使用.SaveAs;对于启用了宏的工作簿,请使用Excel.XlFileFormat.xlOpenXMLWorkbookMacroEnabled。

© www.soinside.com 2019 - 2024. All rights reserved.