Apache POI 잠금 헤더 행


82

Apache POI 3.7로 만든 스프레드 시트에서 행을 잠그는 방법에 익숙한 사람이 있습니까? 잠그는 것은 사용자가 행을 스크롤 할 때 열의 제목 행이 계속 표시되도록한다는 것을 의미합니다. 내 생성 된 스프레드 시트에는 500 개의 행이 있으며 열 이름이 항상 표시되는 것이 좋습니다.


2
POI 3.7은 이제 조금 오래되었습니다. 최신 버전을 사용하지 않는 이유가 있습니까?
Gagravarr 2013

2
네 고용주가 승인 한 것입니다.

답변:


128

시트의 어느 곳에서나 특정 행을 고정해야하는 경우 사용할 수 있습니다 (내 org.apache.poi.ss.usermodel.Sheet) (POI 3.7에서도 사용 가능).

Sheet.createFreezePane(int colSplit, int rowSplit, int leftmostColumn, int topRow)

귀하의 경우 첫 x 행만 고정하려면 int leftmostColumn, int topRow섹션이 제거되고 다음을 사용할 수 있습니다.

Sheet.createFreezePane(int colSplit, int rowSplit)

예를 들면

sheet1.createFreezePane(0, 5); // this will freeze first five rows

내 첫 번째 열과 행 번호 # 17 만 고정하고 싶습니다.이를 달성하는 방법을 친절하게 제안합니다. 미리 감사드립니다.
Ashish Burnwal

17

이렇게하려면 다음과 같이 고정 창을 만들 수 있습니다.

workbook.getSheetAt(workbook.getActiveSheetIndex()).createFreezePane(0, 1);

그러면 첫 번째 행이 제자리에 고정됩니다. 더 많은 옵션이있는 또 다른 방법이 있으므로 API를 확인하십시오 .

유의해야 할 사항은 XSSF 통합 문서를 사용하는 경우입니다. XSSF 스프레드 시트를 사용하여 창 고정 동작을 수정 한 버전 3.8-beta3의 버그 수정에 대한 언급이 있습니다.

50884-이제 XSSF 및 HSSF 고정 창이 동일하게 작동합니다 (poi 개발자).

자세한 내용은 모르지만 그 배에 있다면 조사해볼 가치가 있습니다.


1

그 위에있는 행도 고정되지 않으면 가운데 행을 고정 할 수 없습니다.

100 개의 행이 있고 머리글 행이 50 행에 있다고 가정합니다. 행 1-49에서 스크롤 할 때 모든 항목이 위로 스크롤되고 50 행에 도달하면 50 번째 행이 51-100 행이 스크롤 될 때 상단에 유지됩니다.

그러나 해결 방법이 있습니다. 할 수있는 일은 행을 그룹화 한 다음 고정하는 것입니다.

먼저 1 ~ 49 개의 행을 그룹화 한 다음 1 ~ 50 개의 창을 고정합니다. 이제 사용자는 그룹을 최소화 한 다음 테이블 머리글을 잠그고 맨 위에있는 테이블로 작업 할 수 있습니다.

sheet.groupRow(0, 49);
sheet.createFreezePane(0, 50);

그래도 작은 문제가 있습니다. 시트가 보호 된 경우 MS Excel에서는 그룹을 확장 / 축소 할 수 없습니다. 이를 위해 매크로를 작성해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.