2013-04-09 63 views
6

我使用Microsoft.ACE.OLEDB.12.0連接到Microsoft Excel文件並從中獲取數據。我使用Visual Studio 2012 這裏是我的代碼寫我在C#語言代碼:OLEDB不返回excel文件的第一行

public DataTable getData(string fileName, string sheetName) 
{ 
    connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" 
         + fileName 
         + "';Extended Properties= 'Excel 8.0;HDR=Yes;IMEX=1'"; 

    errorCode = ErrorDefinition.ERROR_NOERROR; 
    errorMessage = ""; 
    DataTable dt = new DataTable();    
    try 
    { 
      string query = "SELECT * FROM [" + sheetName + "]"; 
      OleDbConnection con = new OleDbConnection(connectionString); 
      OleDbDataAdapter dataAdapter = new OleDbDataAdapter(query, con); 
      dataAdapter.Fill(dt); 
    } 
    catch (Exception exp) 
    { 
      errorCode = ErrorDefinition.ERROR_OLEDBERROR; 
      errorMessage = exp.Message; 
    } 
    return dt; 
} 

的問題是,dt不包含指定的頁面文件的第一行。它出什麼問題了?先進的任何幫助表示讚賞。

回答

17

嘗試HDR=NO在您使用的設置"HDR=YES"連接字符串,這意味着你的Excel文件是由OleDb的視爲表的字段名稱的第一行從當前工作表返回。

使用"HDR=NO"向OleDb指示第一行包含數據並且列名自動命名,順序進行。如「F1」,「F2」,「F3」等等。

+2

+1。有關http://connectionstrings.com/excel的更多信息 – 2013-04-09 13:49:07

2

在連接字符串