2012-06-05 116 views
4

奇怪的錯誤對於當前的代碼:上Excel工作簿輸入

String currentPath = Directory.GetCurrentDirectory(); 

     OpenFileDialog op = new OpenFileDialog(); 
     op.InitialDirectory = currentPath; 
     if (op.ShowDialog() == DialogResult.OK) 
      currentPath = op.FileName; 
     else 
     { 
      toolStripStatusLabel1.Text = "Failed to Load Workbook"; 
      toolStripStatusLabel1.Visible = true; 
     } 

     Workbook wb = new Workbook(excel.Workbooks.Open(currentPath)); 

我收到錯誤:

System.Runtime.InteropServices.COMException了未處理 消息=檢索COM類工廠組分與由於以下錯誤,CLSID {00020819-0000-0000-C000-000000000046}失敗:80040154類未註冊(異常來自HRESULT:0x80040154(REGDB_E_CLASSNOTREG))。 源= mscorlib程序 錯誤碼= -2147221164

我要的是一個預定義的工作簿的工作表添加到

回答

12

我想在你的代碼中,Workbook的全名是Microsoft.Office.Interop.Excel.Workbook,而那個excel是Microsoft.Office.Interop.Excel.Application的一個實例。

如果是這種情況,您的代碼無法工作,因爲Workbook是一個接口,而接口沒有構造函數。你要問Excel應用程序創建工作簿的你,和你的情況,你必須簡單地寫:

Workbook wb = excel.Workbooks.Open(currentPath); 

以類似的方式,如果你想創建一個新的空白工作簿中,你應該寫:

Workbook wb = excel.Workbooks.Add(System.Reflection.Missing.Value); 
+0

令人驚訝的是,這爲我工作!我花了幾個小時,每個人都試圖說,這是由於64位/ 32位構建模式,我已經設置了它應有的方式,但仍然存在問題,但這是有效的。謝謝! –

2

我不知道你的錯誤,但我已經做了類似這樣的:

_app = new Excel.Application(); 
Excel.Workbook wb = _app.Workbooks.Open(currentPath); 
1

右擊你的解決方案,改變平臺的x86 重建您的解決方案...... 祝你好運!