dynamicparsingExcel工作表(不提供单元格范围,因为工作表中数据的位置可能会dynamic变化)

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

 select * from [sheetname$A2:N50] 

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

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

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

我需要根据关键词search来parsing我的Excel表格。 我的意思是我应该search关键字“XYZ”,而不是parsing它下面的表格。 这个关键词可能会改变其每一次执行的位置。

由于我不知道单元格范围,我甚至无法使用上述查询将Excel数据导入到DataTable

您可以将所有数据填充到数据表中并从中进行查询,而无需从单元格范围中进行select。

 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) { //.... } 

希望这可以帮助…