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

问题描述 投票:0回答:1

注意:我刚刚意识到Excel增加了报告编号,忽略它们对于每组的每一行都是相同的。

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

Original Table Format

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

Formatted Output

只是寻找有关使用EPPlus的见解或其他遇到过类似问题的建议。

c# excel epplus
1个回答
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非常粗糙,但我没有找到更好的方法。希望有人能够提供更优雅的解决方案

© www.soinside.com 2019 - 2024. All rights reserved.