2013-05-10 43 views
2

我写打开一个Excel文件,该代码:打开Excel 2010工作簿中的IIS7事业“从HRESULT异常:0x800A03EC”

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 
     } 
    } 

,并在开放式这个错误发生:“从HRESULT异常:0x800A03EC”

笔记:

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

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

  • 我在桌面上创建文件夹 “C:\ WINDOWS \ system32 \设置\ systemprofile”,并设置权限为 “网络服务” 和“用户”

  • 更改权限DCOM配置中的 “Microsoft Excel应用程序”,然后选择 “交互式用户”

  • 设置权限为 “网络服务” 和 “用户” 为 “C:\ WINDOWS \ TEMP”

我很困惑。请帮帮我!

回答

3

Interop is NOT supported in sever-scenarios by MS

有很多选择阅读/编辑/制作的Excel文件,而不互操作/在服务器上安装的Excel:

MS提供免费的OpenXML SDK 2.0版 - 看到http://msdn.microsoft.com/en-us/library/bb448854%28office.14%29.aspx(XLSX只)

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

另一种自由选择看http://www.codeproject.com/KB/office/OpenXML.aspx(XLSX只)

如果您需要更多像处理旧的Excel版本(如XLS,不仅XLSX),渲染,创建PDF,公式等,则有不同的免费和商业图书馆像ClosedXML(免费,仅XLSX),EPPlus(免费,XLSX只),Aspose.CellsSpreadsheetGearLibXLFlexcel

+0

我需要XLS工作,XLSX,甚至CSV。在我的应用程序用户上传他们的Excel文件(xls,xlsx和csv),我应该读取数据。除了Interop,我还有什么解决方案吗? – 2013-05-10 18:30:36

+0

@OmidRH是的,有几个解决方案 - 对于XLSX和CSV有免费的,对于XLS那里AFAIK只有商业... ...对于所有这些我已经在上面提供了我的答案中的链接... – Yahia 2013-05-10 18:48:34

+0

我与interop(我有一个老板...所以这样的事情仍然会发生) 有什么想法? ''xlApp.Workbooks.Open(filePath);''抛出我担心的COMException – SparK 2013-11-21 12:49:43

相关问题