在IIS7中打开Excel 2010工作簿会导致“exception来自HRESULT:0x800A03EC”

我写这个代码打开一个excel文件:

private readonly object _missing = Type.Missing; private IEnumerable<CellModel> GetUsedCells(string fileName) { SetNewCurrentCulture();//set "en-US" culture var application = new Application(); var workbooks = application.Workbooks; Workbook workbook = null; try { workbook = workbooks .Open(fileName, 0, false, _missing, "", "", true, XlPlatform.xlWindows, _missing, false, false, _missing, false, false, XlCorruptLoad.xlNormalLoad ); } finally { //realocate memory if(workbook != null) { ReleaseComObject(workbook); workbook = null; } workbooks.Close(); ReleaseComObject(workbooks); workbooks = null; application.Quit(); ReleaseComObject(application); application = null; GC.GetTotalMemory(false); GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); GC.GetTotalMemory(true); ResetCurrentCulture();//reset old culture } } 

并在Open方法中发生此错误:“从HRESULTexception:0x800A03EC”

笔记:

  • 我使用vs2012和我的项目的目标框架是4和Microsoft.Office.Interop.Excel的版本是14.0.0.0

  • 服务器信息:Windows Server 2008 32位,IIS7,Excel 2010

  • 我在“C:\ Windows \ System32 \ config \ systemprofile”中创build了Desktop文件夹,并将权限设置为“networking服务”和“用户”

  • 在“Microsoft Excel应用程序”中更改DCOMconfiguration中的权限并select“交互式用户”

  • 将权限设置为“networking服务”和“用户”为“C:\ Windows \ Temp”

我很困惑。 请帮帮我!

MS不支持Interop 。

在服务器上没有Interop /安装Excel的情况下,有很多选项可以读取/编辑/创buildExcel文件:

MS提供免费的OpenXML SDK V 2.0 – 请参阅http://msdn.microsoft.com/zh-cn/library/bb448854%28office.14%29.aspx (仅限XLSX)

这可以读取+写入所有MS Office文件(包括Excel)。

另一个免费的选项见http://www.codeproject.com/KB/office/OpenXML.aspx (仅限XLSX)

如果您需要处理较旧的Excel版本(如XLS,而不仅仅是XLSX),渲染,创buildPDF,公式等等,那么还有不同的免费和商业库,如ClosedXML (免费,仅限XLSX), EPPlus (免费,仅限XLSX) , Aspose.Cells , SpreadsheetGear , LibXL和Flexcel等。