使用c#.net问题阅读Excel

时间:2011-03-31 10:17:42

标签: c# .net excel windows-forms-designer

我使用C#从Excel工作表中读取数据。

这是我的代码,它正在运作。

var fileName = @"C:\Users\yohan\Desktop\Brandix\y.xlsx";
var connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0; data source=                  {0}; Extended Properties=Excel 12.0;", fileName);

var adapter = new OleDbDataAdapter("SELECT * FROM [BOM$]", connectionString);
var ds = new DataSet();

adapter.Fill(ds);
DataTable data = ds.Tables[0];

但是它总是跳过excel表的顶行为什么呢? 请帮忙...... !!

谢谢   YOHAN

4 个答案:

答案 0 :(得分:3)

这是DataAdapter的正常行为。顶行被视为标题行或“列名称”行。

要更改此行为,请在连接字符串的扩展属性中添加属性“ HDR =否

示例:

var fileName = @"C:\Users\yohan\Desktop\Brandix\y.xlsx";
var connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0; data source={0}; Extended Properties=""Excel 12.0;HDR=NO;""", fileName);

var adapter = new OleDbDataAdapter("SELECT * FROM [BOM$]", connectionString);
var ds = new DataSet();

adapter.Fill(ds);
DataTable data = ds.Tables[0];

答案 1 :(得分:1)

尝试将连接字符串更改为...

   "Provider=Microsoft.ACE.OLEDB.12.0; data source={0}; Extended Properties=\"Excel 12.0;HDR:No\""

有关更多可能的连接字符串,请参阅this page。 HDR设置确定提供程序将顶行视为列名。

答案 2 :(得分:1)

尝试将HDR = NO添加到扩展属性。

有关详细信息,请参阅此link

答案 3 :(得分:0)

在服务器端应用程序中读取Excel文件的推荐方法是Open XML。

您可以尝试安装ACE组件,但仍然不建议使用它,也不支持。

对于使用Open XML,您可以浏览以下链接,这些链接将帮助您在代码中使用Open XML来读取Excel文件 -

Link1

Link2

Link3