2017-12-18 3 views
0

참고 : Excel은 보고서 번호를 증가시키고 그룹당 각 행마다 동일하지 않음을 알았습니다.열의 모든 셀을 표시하지 않고 EPPlus에서 데이터 그룹화 또는 정렬

나는 데이터 테이블이 나는 그것이 엑셀 출력에 다음과 같이려고하고이

Original Table Format

과 같은 형태 데이터베이스에서 돌아오고 있습니다. 윤곽선 작성에 대한 기사를 읽었지만 그 내용이 내가 실제로 나온 것인지 확실하지 않습니다. 그 사건 번호 필드에 의해 데이터를 "그룹화"하려고 시도하지만, 동일 할 것이기 때문에 각 행에 대해 데이터를 반복하지 않습니다. 각 그룹별로 다른 데이터는 수취인과 금액입니다.

Formatted Output

그냥이 또는 비슷한 건너 다른 사람들로부터 어떤 조언을 EPPlus 사용에 대한 통찰력을 찾고.

+1

더 나은 답변을 찾으시기 바랍니다.하지만 그룹화를 수동으로 수행해야합니다. 나는 이것이 모두 EPPlus와 너무 흔한 것을 발견했다. 데이터 (아마 linq의'GroupBy()'를 사용하여 데이터를 그룹화 한 다음 각 그룹의 첫 번째 행에 대한 첫 번째 4 열 값만 인쇄해야합니다. – kmc059000

답변

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는 꽤 거친 지불을 통해 이동합니다,하지만 난 더 나은 방법을 발견하지 않았습니다. 누군가가보다 세련된 솔루션을 제공 할 수 있기를 바랍니다.

+0

죄송합니다. 코드를 포함하지 않으셔서 현재이 데이터를 SQL SP 호출을 통해 DataTable 형태로 다시 가져옵니다. –

관련 문제