Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 动态分析Excel工作表(不提供单元格范围,因为工作表中的数据位置可能会动态变化)_C#_Excel - Fatal编程技术网

C# 动态分析Excel工作表(不提供单元格范围,因为工作表中的数据位置可能会动态变化)

C# 动态分析Excel工作表(不提供单元格范围,因为工作表中的数据位置可能会动态变化),c#,excel,C#,Excel,我正在Win7机器上使用VS2010中的C#.NET3.5。我有一张Excel表格,我想提取其中存储的数据当给定单元格范围时,我知道如何解析Excel。这里我们使用OLEDB连接,给出SQL命令并将其映射到数据表,然后访问数据 select * from [sheetname$A2:N50] 其中,“sheetname”是Excel工作表的名称,“$A2:N50”是单元格的范围 但是,但是,我的要求完全不同。 我不能像上面那样硬编码单元格范围,因为数据单元格的位置可能会动态变化。例如:存

我正在Win7机器上使用VS2010中的C#.NET3.5。我有一张Excel表格,我想提取其中存储的数据当给定单元格范围时,我知道如何解析Excel。这里我们使用OLEDB连接,给出SQL命令并将其映射到
数据表
,然后访问数据

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)
{
  //....
}
希望这有助于