0

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
   }
  }

私の質問は: Summary Sheet (SummaryID) のすべての行について、「Users」および「Others」シートの SummaryID に一致するすべての一致する行を取得したいです

注: 列SummaryIDは 3 つのシートすべてに存在し、すべてのシートの最初の列です。

4

3 に答える 3

2

私は LinqToExcelを使用するのが好きです彼らはあなたを助けるかもしれない LinqToExcel.Row クラスを持っており、foreach ステートメントで linq を使用します。

于 2013-02-13T18:56:29.357 に答える
0

Excel シートをデータベースのように扱い、必要なデータを照会すること、OLEDBまたは同様のテクノロジを使用することを検討したことがありますか?

これはJoin、その時点で単純なクエリになります-より高速になる可能性があります...

于 2013-02-13T17:49:28.913 に答える
0

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 );
于 2013-02-13T19:24:48.150 に答える