2013-05-10 85 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

相關問題