我正在将项目移至Azure。该项目使用LinqToExcel从Excel文件中读取数据。
LinqToExcel有一些依赖项,Azure WebApp不支持这些依赖项。所以,我正在将代码迁移到EPPlus。
但是,如何查找这样的查找,请查看EPPlus?
articles
答案 0 :(得分:0)
自从我看过LinqToExcel以来已经好几年了,但是从我记忆中它将列视为属性对象的属性 - 实际上是一种光滑的。但EPPlus并没有这种封装。
以此文件为例:
https://github.com/paulyoder/LinqToExcel/blob/master/src/LinqToExcel.Tests/ExcelFiles/Companies.xlsx
并说你想要所有公司> 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
}