2015-03-25 112 views
-1

我對OpenFileDialog類不是很熟悉,但是我正在使用它來選擇文件並在C#winform應用程序中打開文件。這是我的語法,當它打開時它有正確的文件名,但它會拋出一個調試錯誤System.Runtime.InteropServices.COMException: The server threw an exception RPC信息:Exception from HRESULT: 0x80010105 (RPC_E_SERVERFAULT)並且如果內存服務,那是你可以得到的最通用的消息之一。從句法上來說,這個設置是否正確?或者我怎樣才能實現我的.xlsx文件打開?打開Excel 2007文件時出錯

OpenFileDialog fd = new OpenFileDialog(); 
     fd.Title = "Select The File To Open"; 
     fd.Filter = "Excel Files|*.xlsx"; 
     fd.InitialDirectory = @"C:\"; 
     if (fd.ShowDialog() == DialogResult.OK) 
     { 
      Excel.Application xlsApp = new Excel.Application(); 
      try 
      { 
       Workbook wb = xlsApp.Workbooks.Open(fd.FileName); 
       MessageBox.Show("The file was opened"); 
      } 
      catch (Exception grrr) { MessageBox.Show(grrr.ToString()); } 
     } 
+0

我相信'COMException'通常會給出一個HRESULT錯誤代碼,可以幫助您解讀出錯的部分。 – Phylogenesis 2015-03-25 01:19:13

+0

@Phylogenesis請參閱編輯。 – user2676140 2015-03-25 01:25:47

+0

你真的*需要*與Excel交互嗎?如果您只是想從Excel文件導入數據,那麼有更好的方法來做到這一點。使用不帶外部依賴項的本機庫,如Open XML SDK,EPPlus或NPOI(EPPlus是我的選擇)。重量更輕,速度更快,沒有依賴性,至少最後兩個更容易處理。 – mason 2015-03-25 12:42:57

回答

1

檢查您的參考。例如,如果在運行此項目的計算機上將Excel 2000設置爲默認值,但爲Excel 2007設置了引用(將顯示爲Excel 12.0對象庫),則會收到上述HRESULT錯誤。

檢查IMO的最快方法是查看您的解決方案資源管理器,然後單擊參考旁邊的下拉箭頭,然後選擇Microsoft.Office.Interop.Excel並查看說明中列出的版本。