注意:我刚刚意识到Excel增加了报告编号,忽略它们对于每组的每一行都是相同的。
我有一个从数据库返回的数据表,看起来像这样
我试图让它在Excel输出中看起来像这样。我读过关于大纲的文章,但我不确定这是我真正追求的。我试图通过该案例编号字段“分组”数据,但不重复每行的数据,因为它将是相同的。每个分组的不同数据是收款人及其金额。
只是寻找有关使用EPPlus的见解或其他遇到过类似问题的建议。
我相信这可以通过Linq来实现。没有看到任何代码,有点难以产生一个好例子,但结果应该可以通过以下想法实现:
首先使用Case_Number,Docket,Agency_Name和Report_Number填写excel单元格的foreach,然后执行第二次foreach以完成付款
var results = GetResults(); //However you retrieve your collection from DB
var groupedResults = results.GroupBy(a => new {
a.Case_Number,
a.Docket,
a.Agency_Name,
a.Report_Number}).Select(b => b.FirstOrDefault());
foreach(var group in groupedResults)
{
// Fill the cells
foreach(var payment in results.Where(a =>
a.Case_Number == group.Case_Number
&& a.Docket == group.Docket
&& a.Agency_Name == group.Agency_Name
&& a.Report_Number == group.Report_Number)
{
// Fill the payment detail cells and increment the row counter
}
}
不可否认,第二个foreach非常粗糙,但我没有找到更好的方法。希望有人能够提供更优雅的解决方案