2014-01-27 61 views
2

我想從我已經創建的Excel文件中讀取數據。 但是,在運行代碼時,始終在同一路徑中創建具有相同名稱的新損壞文件。並且還將「Microsoft Jet數據庫引擎找不到該對象的錯誤信息」Sheet1 $',請確保該對象存在,並且正確拼寫其名稱和路徑名稱。「無法讀取Excel中的數據在c#

這裏是我的代碼

public void readdata() 
     { 
      //var fileName = string.Format("{0}\\C:\\Indputdata.xls", Directory.GetCurrentDirectory()); 
      //var con = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", fileName); 

      string con = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\Inputdata.xls;Extended Properties='Excel 8.0;HDR=Yes;'"; 
      using (OleDbConnection connection = new OleDbConnection(con)) 
      { 
       connection.Open(); 
       OleDbCommand command = new OleDbCommand("select * from [Sheet1$]", connection); 
       using (OleDbDataReader dr = command.ExecuteReader()) 
       { 
        while (dr.Read()) 
        { 
         var row1Col0 = dr[0]; 
         Console.WriteLine(row1Col0); 
        } 
       } 

      } 
     } 
+0

什麼是你的第一個文檔的工作表的名稱? – Baseleus

+0

無論如何,如果您的文檔是使用不同於英語的MS Excel創建的,那麼您必須使用工作表的本地化名稱或重命名它們。 – Baseleus

+0

Sheet1。我沒有重命名 –

回答

3

對於Excel 2007和2010,您需要使用ACE OLEDB Provider。Jet OLEDB Provider已被棄用且不支持Office版本2007或更高版本的文件。

試試這個Extended Properties=""Excel 8.0;HDR=Yes"";"

Data Source=D:\Inputdata.xls; 

string con = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\Inputdata.xls;Extended Properties=""Excel 8.0;HDR=Yes"";" 

Excel Connection strings

check

+0

嘗試過,但有相同的錯誤 –

+0

我使用的是Excel 2010版本。我是否想要改變屬性中的任何內容? –

+0

@NithyaIyappan使用ACE OLEDB Provider.instead of OLEDB.4.0; ..檢查我已更新 –

2

這個錯誤通常發生是由於不正確的路徑。請確保文件路徑正確,並且該文件中有Sheet1

+0

我的文件路徑是正確的,我有Sheet1 –