将Excel数据导入C#时如何避免第一行变成列名?

5

我正在尝试使用C#将Excel中的数据导入到数据表中。以下是我用来执行此操作的代码...

string ConnString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
                    "Data Source=" + fileName + "; Jet OLEDB:Engine Type=5;" +
                    "Extended Properties=\"Excel 8.0;HRD=No;IMEX=1;\"";
OleDbDataAdapter SheetAdapter = new OleDbDataAdapter("select * from ["Sheet1"]", conn);
System.Data.DataTable excelData = new System.Data.DataTable();
SheetAdapter.Fill(excelData);
excelData.TableName = "excelData";

foreach (DataRow row in excelData.Rows)
{
   ProcessDataRow(row);
}

在调试时查看数据表时,第一行数据已成为表的列名。当我在连接字符串中加入HDR=No时,我不明白为什么会发生这种情况。是否有方法强制DataTable不将第一行作为列名?
2个回答

5
您提供的代码示例中,HRD=No应为HDR=No

哦,我的天啊...就这样了。我在这上面花费了太多的时间。谢谢。 - PICyourBrain

0

我使用NPOI库,完成了你所询问的任务以及更多。唯一的限制是它暂时无法处理Excel 2007格式,因此你只能使用97-2003格式。


我喜欢使用我的旧数据适配器方法。没有外部程序集需要分发。支持所有当前的xls文件,并且它并不难使用。(假设您不混淆HRD和HDR!) - PICyourBrain
@Jordan。我同意你的情况,只使用OleDataAdapter是有意义的。然而,如果你的应用程序变得更加复杂和/或你的客户想要更多的功能,那么你采取的路线将成为一个死胡同。 - AngryHacker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接