从C#中的Excel文件中获取行

本文关键字:获取 文件 Excel 中的 | 更新日期: 2023-09-27 17:58:55

我正在阅读C#中的Excel文件。文件中有3张:

  1. 摘要
  2. 用户
  3. 其他

我正在循环浏览汇总表的各个列。(代码如下)

每张纸上都有一列:SummaryID

foreach (DataColumn dc in Summary.Columns)
 {
   foreach (DataRow dr in Summary.AsEnumerable())
   {
     //get column SummaryID for everyrow
     //And then get all rows in Users sheet that match  SummaryID
     //And then get all rows in Others sheet that match SummaryID
   }
  }

我的问题是:对于汇总表(SummaryID)中的每一行,我希望获得与"用户"answers"其他人"工作表中的SummaryID匹配的所有匹配行。

注意:列SummaryID存在于所有3张图纸中,并且是所有图纸中的第一列

从C#中的Excel文件中获取行

我喜欢使用LinqToExcel他们有一个LinqToExcel.Row类,这可能会对你有所帮助,你将在foreach语句上使用linq。

您是否考虑过将Excel工作表视为数据库,并使用OLEDB或类似技术查询出您想要的数据?

这将是一个简单的Join查询-可能会更快。。。

您可以使用OleDB来完成此操作。代码与相似

 // create a connection to your excel file
    // the 8.0 denotes excel 2003
    // you will need to use the right number for your version of excel
    OleDbConnection con = new OleDbConnection( @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=InsertYourFile.xls"; Extended Properties=Excel 8.0" );
    // create a new blank datatableDataTable 
   dtSheets = new DataTable();
    // create a data adapter to select everything from the worksheet you want
    OleDbDataAdapter da = new OleDbDataAdapter( "select * from [YourWorksheetName$] WHERE BLAH, etc", con );

   // use the data adapter to fill the datatable
   da.Fill( dtSheets );