我正在使用OleDbCommand将xls文件导入ds。我遇到的问题是在我的ds的foreach期间跳过第一排。我无法弄清楚为什么。有什么建议吗?
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 }
答案 0 :(得分:14)
更改连接字符串(如评论中所述):
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);
答案 1 :(得分:7)
检查您的连接字符串。它很可能包含:
HDR=Yes
表示第一行是标题
答案 2 :(得分:0)
也许你已经告诉它跳过第一排。我记得一个听起来像FirstRowIsHeader的属性。我认为如果设置为true,那么它会跳过。这可以在您创建连接时更改