c# - 在读取 Excel 文件时跳过第一行

标签 c# excel datagridview

您好,我正在尝试将一个 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/

相关文章:

vb.net - 如何在 GridView 中为网格单元格着色?

c# - 从 C# 中的证书存储中获取证书列表

c# - 如何在 ASP.NET Web 应用程序中显示 Windows.Form.MessageBox?

c# - Silverlight 应用程序中的 RIA 服务代码生成

Python xlsxwriter 不会在退出代码 -1 上创建工作簿

vba - Excel VBA 循环选择工作表

c# - 在 C# 中验证数据网格

c# - 霍夫变换C#代码

vba - 如何在vba中构建一个可以区分0的默认空对象?

c# - 向数据 GridView 添加新列