在EPPlus中对数据进行分组或排序,而不显示列中的所有单元格

时间:2017-12-18 23:50:51

标签: c# excel epplus

注意:我刚刚意识到Excel会增加报告编号,请忽略每个组的每一行都是相同的。

我有一个从数据库回来的数据表,看起来像这样

Original Table Format

我试图在Excel输出中看起来像这样。我读过关于大纲的文章,但我不确定这是我真正追求的。我正在尝试" group"该案例编号字段的数据,但不重复每行的数据,因为它将是相同的。每个分组不同的数据是收款人及其金额。

Formatted Output

只是寻找有关使用EPPlus的见解或其他遇到过相似内容的人的建议。

1 个答案:

答案 0 :(得分:0)

我相信这可以通过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非常粗糙,但我还没有找到更好的方法。希望有人能够提供更优雅的解决方案