2017-06-12 5 views
0

私はAzureにプロジェクトを移しています。プロジェクトはLinqToExcelを使用してExcelファイルからデータを読み取ります。LinqToExcel to EPPlus

LinqToExcelにはいくつかの依存関係がありますが、これはAzure WebAppではサポートされていません。したがって、コードをEPPlusに移行しています。

しかし、どのようにこのようなルックアップは、EPPlusで見ることができますか?実際にスリックの種類 -

var excel = new ExcelQueryFactory(excelFile); 
var results = from c in excel.Worksheet(mySheet) 
        where c["columnName"] == Value1.ToString() 
        select c; 

myValue = results.First()["MyColumnName2"] 

答えて

0

その私がLinqToExcelで私はそれをプロパティとしてオブジェクトのプロパティを列を扱う覚えているから見ているので、年に。しかし、EPPlusには、そうしたカプセル化が組み込まれていません。一例として、このファイルのようなものを使用して

https://github.com/paulyoder/LinqToExcel/blob/master/src/LinqToExcel.Tests/ExcelFiles/Companies.xlsx

enter image description here

、あなたはすべて同社が欲しいと言う> 200人の従業員やCEO名前にsと、あなたができる最善についてこれはです:

var fi = new FileInfo(@"C:\temp\Companies.xlsx"); 

using (var pck = new ExcelPackage(fi)) 
{ 
    var wb = pck.Workbook; 
    var ws = wb.Worksheets["Sheet1"]; 

    var headerRow = ws.Cells 
     .Where(cell => cell.Start.Row == 1) 
     .ToList(); 

    var ceoCountColNum = headerRow 
     .First(cell => cell.Value.ToString() == "CEO") 
     .Start 
     .Column; 

    var empCountColNum = headerRow 
     .First(cell => cell.Value.ToString() == "EmployeeCount") 
     .Start 
     .Column; 

    var rows = ws.Cells 
     .GroupBy(cell => cell.Start.Row) 
     .Skip(1) 
     .Select(g => g.ToList()) 
     .Where(row => 
      (double) row[empCountColNum - 1].Value > 200 && 
      row[ceoCountColNum - 1].Value.ToString().Contains("s")) 
     .ToList(); 

    Console.WriteLine(rows.Count); //return 2 
}