2013-04-23 109 views
0

我正在維護一個當前引用Interop.Excel.dll(v 1.5.0.0)的Web應用程序。excel interop OK與Excel 2003與'Office 2007兼容包'?

的interop.excel.dll中被用來訪問Excel 2003下.xls文件,然後,隨後,Excel 2010中下的.xlsx/M的文件都能正常運作。

網頁應用程序被移到另一臺機器上(它安裝了Excel 2003,安裝了「Office 2007 Compatability Pack」),現在無法打開.xlsx/m文件(出現下面顯示的錯誤堆棧跟蹤)。

有一個關於人類開的.xlsx/M檔其他比你看到小兼容性包「轉換」對話框望了一會兒,該文件被打開那臺機器上沒有問題。

有沒有結合的一些已知的限制:Excel 2003中; 'Office 2007 Comp Pack';和.xlsx/m文件?

堆棧跟蹤

2013-04-23 16:03:00.7192|Error|An error occurred in OpenCloseManager. Details Follow: 
Exception Type --- 
System.Runtime.InteropServices.COMException 
Message --- 
The server threw an exception. (Exception from HRESULT: 0x80010105 (RPC_E_SERVERFAULT)) 
HelpLink --- 

Source --- 
Interop.Excel 
StackTrace --- 
    at Excel.Workbooks.Open(String Filename, Object UpdateLinks, Object ReadOnly, Object Format, Object Password, Object WriteResPassword, Object IgnoreReadOnlyRecommended, Object Origin, Object Delimiter, Object Editable, Object Notify, Object Converter, Object AddToMru, Object Local, Object CorruptLoad) 
    at TCG.CRRExDBInterface.BO.SpreadSheetHelper.manageExcelOpen(Boolean blnUpdateLinks) in D:\foo\ExcelDBInterface-4.7.1.0\ExcelDBInterface-4.7.1.0\ExcelDBInterface\CRRExDBInterface\App_Code\BusinessObject\SpreadSheetHelper.cs:line 1920 
TargetSite --- 
Excel.Workbook Open(System.String, System.Object, System.Object, System.Object, System.Object, System.Object, System.Object, System.Object, System.Object, System.Object, System.Object, System.Object, System.Object, System.Object, System.Object)|MasterSubPage.parseSecurityInfoFromSpreadsheetAndSave => SpreadSheetHelper..ctor => SpreadSheetHelper.manageExcelOpen 

回答

0

,以及爲它的價值(並給這個問題的一些分辨率)我放棄了使用舊機器和感動安裝Excel 2010的計算機。根本不是一個真正的答案,但是,我希望,對其他人來說有些跡象表明它不能用我必須交付的資源來解決。

0

勇敢的靈魂是把辦公室互操作的Web應用程序之一。如果您在使用COM API檢查文檔建議不要在服務器上的兩個主要的原因:

  • 它的設計在單線程公寓([STAThread]在您的Main())和多線程的工作絕對是不支持。對失敗的API調用進行一些日誌記錄,並輸出線程名稱和appdomain名稱 - 這些將根據Web調用而有所不同,並且如果您在一個線程上實例化Excel對象並在另一個線程上使用它,則它不起作用。
  • 它依賴於UI結構,即使應用程序不可見 - 對於 示例如果您導致Word(我懷疑Excel也是如此)在應用程序隱藏時顯示彈出框 結果將如同辦公室API電話 掛。檢查您的服務器的帳戶和 確保您的網絡應用程序使用的帳戶不限制 。

在任何情況下,我懷疑的Excel版本是你的問題。

如果我是你,我會推薦爲「管理」升級與OpenXmlSDK的應用程序。這不是一個簡單的開關,但取決於你的情況,它可以值得一段時間 - 你可以多線程,沒有懸掛隱藏的實例等,它更快,你可以很好地控制發生的事情。缺點是陡峭的學習曲線,缺乏複製/粘貼式的功能 - 人們必須解決

+0

感謝您的評論。親自說說,我很樂意嘗試OpenXmlSDK,但「管理」不會!至於在網絡應用程序中使用interop,我只能從我的這種(低容量,低重要性)應用程序的經驗中獲益,這就是說,在這種情況下它的運行良好。我可以很容易地看到,做任何類似的音量幾乎肯定會*不是一個好主意! – shearichard 2013-05-02 01:58:39

相關問題