2013-10-25 25 views
0

閱讀在C#中特定的Excel工作簿中的列時,我得到一個錯誤,使用下面的代碼:GetOleDbSchemaTable(OleDbSchemaGuid.Columns將,空)錯誤出

 DataTable dtCols = new DataTable(); 
     try 
     { 
      dtCols = connExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, null); 
     } 

System.Data.OleDb .OleDbException(0x80004005):Microsoft Jet數據庫引擎找不到對象'Sheet1 $ _'。確保對象存在,並且正確拼寫其名稱和路徑名。

我的表名稱是名稱「Sheet1」,但顯然系統正試圖讀取架構中隱藏表格的列 - 注意該表格名稱末尾有一個下劃線。

如何防止該行代碼出錯?有沒有辦法利用限制參數來解決這個問題?

謝謝。

回答

0

您需要在方法調用中指定工作表,否則它不知道要加載哪些列。它正在加載Sheet1 $作爲您的電子表格中不存在的默認值。

嘗試,

var list = new List<string>(); 
    DataTable dtColumns = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new string[] { null, null, workSheetName, null }); 
    foreach (DataRow dr in dtColumns.Rows) 
     list.Add(dr[3].ToString());