2011-07-14 196 views
6

我正在使用OleDbCommand將一個xls文件導入到ds中。我遇到的問題是在我的第一排跳過的問題。我無法弄清楚爲什麼。有什麼建議麼?c#Excel跳過第一行?

cmd.CommandText = string.Format("SELECT * FROM [{0}$]", worksheetName); 
conn.Open(); 

var adapter = new OleDbDataAdapter(); 
var ds = new DataSet(); 
adapter.SelectCommand = cmd; 
adapter.Fill(ds); 
var table = ds.Tables[0]; 

foreach(DataRow row in table.Rows){ // rest of my code } 
+2

您的電子表格是否有標題行?如果沒有,我會猜測它認爲你是這樣做的,它將首行視爲列標題。 –

+1

連接字符串是什麼?它很可能認爲第一行是一個標題,並且忽略它。 –

+0

也許它把第一行作爲標題? –

回答

13

變化(如在評論中提及)的連接字符串:

string cnn = string.Format( 
    "Provider=Microsoft.ACE.OLEDB.12.0;" + 
    "data source={0}{1}{2};" + 
    "Extended Properties=Excel 8.0;", 
    fileLocation, fileName, fileExtension); 

到:

string cnn = string.Format( 
    "Provider=Microsoft.ACE.OLEDB.12.0;" + 
    "data source={0}{1}{2};" + 
    "Extended Properties=Excel 8.0;HDR=No", 
    fileLocation, fileName, fileExtension); 
+0

謝謝大家。那就是訣竅。 – Scott

0

也許你已經告訴它跳過第一行。我記得一個聽起來像FirstRowIsHeader的屬性。我認爲如果這是真的,那麼它跳過。這可以在您創建連接的時候更改

+0

不,代碼被粘貼。沒有指令跳過第一行!所以除非它默認爲true。 – Scott

+0

是的,我認爲通過蔑視它設置爲真,嘗試設置HDR =否,使用此http://www.connectionstrings.com/excel – saj

7

檢查您的連接字符串。最有可能包含:

HDR=Yes 

這表明,第一行是從頭部

+2

...如果是,請將其更改爲「HDR =否」:) –