C# 动态分析Excel工作表(不提供单元格范围,因为工作表中的数据位置可能会动态变化)
我正在Win7机器上使用VS2010中的C#.NET3.5。我有一张Excel表格,我想提取其中存储的数据当给定单元格范围时,我知道如何解析Excel。这里我们使用OLEDB连接,给出SQL命令并将其映射到C# 动态分析Excel工作表(不提供单元格范围,因为工作表中的数据位置可能会动态变化),c#,excel,C#,Excel,我正在Win7机器上使用VS2010中的C#.NET3.5。我有一张Excel表格,我想提取其中存储的数据当给定单元格范围时,我知道如何解析Excel。这里我们使用OLEDB连接,给出SQL命令并将其映射到数据表,然后访问数据 select * from [sheetname$A2:N50] 其中,“sheetname”是Excel工作表的名称,“$A2:N50”是单元格的范围 但是,但是,我的要求完全不同。 我不能像上面那样硬编码单元格范围,因为数据单元格的位置可能会动态变化。例如:存
数据表
,然后访问数据
select * from [sheetname$A2:N50]
其中,“sheetname”是Excel工作表的名称,“$A2:N50”是单元格的范围
但是,但是,我的要求完全不同。
我不能像上面那样硬编码单元格范围,因为数据单元格的位置可能会动态变化。例如:存储在单元格A20中的数据可能在下一次执行时更改为C14
我需要根据一些关键字搜索来解析我的Excel表格。我的意思是我应该搜索关键字“XYZ”,然后解析它下面的表。该关键字可能会在每次执行时改变其位置
由于我不知道单元格范围,我甚至无法使用上述查询将Excel数据放入
DataTable
。您可以将所有数据填入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)
{
//....
}
希望这有助于