c# - 动态解析 Excel 工作表(未提供单元格范围,因为数据在工作表中的位置可能会动态变化)

标签 c# excel

我在 Win 7 机器上的 VS2010 中使用 C#.NET 3.5。我有一个 Excel 工作表,我想提取其中存储的数据。 我知道如何在给定单元格范围时解析 Excel。这里我们使用 OLEDB 进行连接,提供 SQL 命令并将其映射到 DataTable,然后访问数据。

select * from [sheetname$A2:N50]   

其中“sheetname”是 Excel 工作表的名称,“$A2:N50”是单元格的范围。

但是,但是,我的要求完全不同。

我不能像上面那样对单元格范围进行硬编码,因为数据单元格的位置可能会动态变化。例如:单元格A20中存储的数据可能会在下一次执行时更改为C14。

我需要根据一些关键字搜索来解析我的 Excel 工作表。我的意思是我应该搜索关键字“XYZ”,而不是解析它下面的表格。该关键字可能会在每次执行时更改其位置。

因为我不知道单元格范围,所以我什至无法使用上述查询将 Excel 数据放入 DataTable

最佳答案

您可以将所有数据填充到数据表中并从中查询,而不是从单元格区域中进行选择。

DataTable dt = new DataTable();
try
{
   OleDbConnection con = new OleDbConnection(string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=""Excel 8.0;HDR=yes;IMEX=1""", excelPath));
   OleDbDataAdapter da = new OleDbDataAdapter("select * from [sheetname$]", con);

   da.Fill(dt);
}
catch (Exception ex)
{
   MessageBox.Show(ex.Message);
   return;
}
//now you can use dt DataTable
foreach (DataRow dr in dt.Rows)
{
  //....
}

希望这有助于...

关于c# - 动态解析 Excel 工作表(未提供单元格范围,因为数据在工作表中的位置可能会动态变化),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6148550/

相关文章:

c# - 将图表导出到 Excel 文件

javascript - ASP.NET MVC 使用参数过滤 SQL 查询

c# - Excel 单元格中的 VSTO 对角线

c# - 从内容类型为 application/json 的请求中检索值

vba - 引用另一个工作表VBA重命名Excel中的工作表

vba - protected 工作表允许通过复制和粘贴编辑单元格格式

C#:方法调用永远不会返回

c# - 快速洗牌数字 1 到 4 的方法?

python - 使用openpyxl复制工作表时如何保留VBA代码?

xml - Excel XML 数据提要使行数据脱节