2013-06-04 40 views
1

我想用C#(VS2010 professional)代碼打開一個excel文件(.xlsx)。當執行/單步執行下面代碼的最後兩行時,我得到一個(不可追蹤的,對我來說)異常。下面提到的是我打開一個現有的Excel文件的代碼。從C#.Net(VS2010)打開Excel文件錯誤

 string tesfile = "C:\\Users\\AWaheed3\\Desktop\\1.xlsx"; 
     Microsoft.Office.Interop.Excel.Application xlApp; 
     Microsoft.Office.Interop.Excel.Workbook xlWorkBook; 
     object misValue = System.Reflection.Missing.Value; 
     xlApp = new Microsoft.Office.Interop.Excel.Application(); 
     xlApp.Visible = true; 
     xlWorkBook = xlApp.Workbooks.Open(tesfile, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue); 

此外,我在代碼的開始處包含了下面這行代碼。進一步我已經添加了從的Microsoft.Office.Interop.Excel的工程 - 參考>添加引用(.NET選項卡)

using Microsoft.Office.Interop.Excel; 

任何人都可以提出建議,爲什麼我的代碼失敗/拋出一個錯誤?

問候 阿薩德

EDITED * * ** * ** * ** * ** * ** * ** * ** * ** * *

這是我收到的信息/錯誤。請注意,即使在執行xlApp.Visible = ture行時,代碼仍然失敗。錯誤是

無法將'Microsoft.Office.Interop.Excel.ApplicationClass'類型的COM對象轉換爲接口類型'Microsoft.Office.Interop.Excel._Application'。此操作失敗,因爲IID爲「{000208D5-0000-0000-C000-000000000046}」的接口的COM組件上的QueryInterface調用由於以下錯誤而失敗:庫未註冊。 (來自HRESULT的異常:0x8002801D(TYPE_E_LIBNOTREGISTERED))。


+0

是否在運行此代碼的機器上安裝了MS Excel? – Andrei

+0

是的,它被安裝在同一臺機器上 –

+0

您是否真的需要使用Excel?也許一個託管的Excel庫是一個更好的選擇。 –

回答

0

嘗試刪除雙反斜線,寫不是\或者你可以做的是

Microsoft.Office.Interop.Excel.Application excel = null; 
Microsoft.Office.Interop.Excel.Workbook xls = null; 
try 
{ 
    excel = new Microsoft.Office.Interop.Excel.Application(); 
    object missing = Type.Missing; 
    object trueObject = true; 
    try 
    { 
      excel.Visible = false; // or true 
      excel.DisplayAlerts = false; 
    } 
    catch(Exception e) 
    { 
       Console.WriteLine("-------Error hiding the application-------"); 
       Console.WriteLine("Occured error might be: " + e.StackTrace); 
    } 
    xls = excel.Workbooks.Open(excelFile, missing, trueObject, missing,missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing); 
    //xls = excel.Workbooks.Open(@"file.xls", missing, trueObject, missing,missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing); 
} 
catch (Exception ex) 
{ 
      MessageBox.Show("Error accessing Excel document.\n\n" + 
      ex.Message); 
} 
// Must be surrounded by try catch to work. 
// http://naimishpandya.wordpress.com/2010/12/31/hide-power-point-application-window-in-net-office-automation/ 

的@刪除任何問題與路徑。代碼當然與你的類似。只是我用不同的方式重寫它。查找System.Reflection,我改用System.Type。並且對於將來的一些建議,如果您使用COM文件,請儘量在最後正確關閉它們。 **編輯。

+0

即使在打開文件命令之前,錯誤/代碼仍然失敗。執行Visible命令時失敗 –

+0

在它之間放置try/catch。我必須這樣做,因爲你試圖將Excel設置爲可見/不可見。 – mike27015

+0

您可能在編輯/更新的問題中看到錯誤消息 –