C# LinqToExcel到EPPlus
我正在将一个项目转移到Azure。该项目正在使用LinqToExcel从Excel文件中读取数据 LinqToExcel有几个依赖项,Azure WebApp不支持这些依赖项。因此,我正在将代码迁移到EPPlus 但是,像这样的查找如何在ePlus中查找C# LinqToExcel到EPPlus,c#,asp.net,excel,epplus,linq-to-excel,C#,Asp.net,Excel,Epplus,Linq To Excel,我正在将一个项目转移到Azure。该项目正在使用LinqToExcel从Excel文件中读取数据 LinqToExcel有几个依赖项,Azure WebApp不支持这些依赖项。因此,我正在将代码迁移到EPPlus 但是,像这样的查找如何在ePlus中查找 var excel = new ExcelQueryFactory(excelFile); var results = from c in excel.Worksheet(mySheet) where c[
var excel = new ExcelQueryFactory(excelFile);
var results = from c in excel.Worksheet(mySheet)
where c["columnName"] == Value1.ToString()
select c;
myValue = results.First()["MyColumnName2"]
从我开始研究LinqToExcel已经好几年了,但据我记忆,它将列视为对象的属性—实际上有点光滑。但EPPlus并没有构建这种封装 以类似此文件的内容为例: 如果你想让所有公司超过200名的员工和首席执行官在他们的名字里写上
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
}