2012-02-09 4 views
4

Excel에서는 메뉴 Data ->Outline ->Subtotal의 부분합 옵션을 제공합니다. 자동으로 하위 합계와 데이터 폴드 가능성을 만듭니다. 아래 이미지는 작업이 시트를 어떻게 변환하는지 보여줍니다.Excel의 부분합 기능 구현

enter image description here

는 그리고 이것은 내가 POI를 통해해야 할 일을 정확히. 내가 중급 합계를 계산할 수 있도록 부분합 함수를 셀에 설정하는 방법을 알고 있습니다. 그러나 왼쪽 테두리에이 접기를 사용하려면 어떻게해야합니까?

나는 groupRow() 메서드가 있다는 것을 알았지 만 중첩 된 그룹은 제대로 작동하지 않습니다. 다음 코드를 사용하면 두 그룹 만 얻습니다. 큰 (1-7)과 (1-3). 그룹 (5-7)이 누락되어 호출 순서를 변경해도 아무 효과가 없습니다.

sheet.groupRow(1, 7); 
sheet.groupRow(1, 3); 
sheet.groupRow(5, 7); 

답변

3

나는 POI의 아주 오래된 혼란 스럽다을 사용하지만 내가 그것을 어떻게입니다 : 내가 들여 쓰기 수준뿐만 아니라 저장된 행에 대한 모델을 가지고 있으므로 (그것이
나는 여러 중첩 된 그룹이 필요 들여 쓰기가 암시 된 나무). 방문자와 모델을 횡단하여 그룹 시작 및 끝 행 번호를 가져 왔습니다. 이어서 각 그룹에 대해 HSSFSheet.groupRow이라고합니다. 내가 올바르게 기억한다면 그룹 통화의 순서가 중요합니다.

+0

수 일부 코드를 게시 하시겠습니까? 나는 여전히 그 중첩 된 그룹을 작동시키지 않는다. – Kai

+0

여기 있습니다 : http://pastebin.com/iFkUFX3q 이것은 컨텍스트 외부에서 잡았지만 여전히 이해할 수 있기를 바랍니다. 그렇지 않은 경우 더 붙여 넣습니다. 그룹과 그룹 OH는 다른 구조에 대해 동일하게 적용되므로 그 중 하나만 있으면 충분합니다. – zeller

+0

어쨌든, 모든 행 번호를 그룹으로 묶어서 로깅을 사용하여 세대를 실행할 수 있다고 생각한다면 어쨌든 시트의 스크린 샷이 어딘가에 있습니다. – zeller