您好,我正在尝试将一个 Excel 文件转换为我的 dataGridView,但由于 Excel 文件的格式设置方式,文档的其余部分有两个设置单元格,因此存在列名问题。但是,列名实际上位于第 2 行。如何跳过读取的文件中的第一行,以便 dataGridView 中的列显示第二行中的单元格值?
当前代码:
var connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0; data source={0}; Extended Properties=Excel 8.0;", openFileDialog1.FileName);
string query = String.Format("select * from [{0}$]", "Sheet1");
var adapter = new OleDbDataAdapter(query, connectionString);
DataSet ds = new DataSet();
adapter.Fill(ds);
DataTable dt = ds.Tables[0];
techGrid.DataSource = dt;
最佳答案
正确的方法是告诉 Excel 在工作表中的确切位置找到您的列标题和数据。导入整个工作表并尝试从任意数据行重建标题会带来严重的麻烦。 OPENQUERY 不保证行顺序。在测试中它似乎总是按顺序导入,但是一旦您将它移动到具有多卷 tempdb 的系统或负载很重的生产系统,您的导入将不再排序,您的代码将尝试将您的数据解释为列标题。
代替:
string query = String.Format("select * from [{0}$]", "Sheet1");
使用:
string query = String.Format("select * from [{0}${1}]", "Sheet1","A2:ZZ");
编辑:使用 "A2:end"
而不是 "A2:ZZ"
。
关于c# - 在读取 Excel 文件时跳过第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9713048/