2011-07-14 107 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 =否”:) –