2013-11-25 2 views
11

나는 아파치 poi와 최신 30 열과 1 백만 레코드로 큰 엑셀 2010을 만들려고합니다. 이 링크 http://svn.apache.org/repos/asf/poi/trunk/src/examples/src/org/apache/poi/xssf/usermodel/examples/BigGridDemo.java에 설명대로 작성 중입니다. 하지만 열 너비를 열 머리글 텍스트 크기와 같게하려고합니다. 하지만 코드아파치 poi 큰 자동 열 너비를 엑셀

for (int x = 0; x < sheet.getRow(0).getPhysicalNumberOfCells(); x++) { 
      sheet.setColumnWidth(x, 20*256); 
     } 

다음은 엄청난 시간과 심지어 5기가바이트 힙 크기와 I 메모리가 무엇입니까 복용으로 엑셀을 만든 후이 일을하고 때.

감사

+0

왜 SXSSF를 사용하지 않습니까? 그것은 BigGrid 데모를위한 새로운 대체품입니다. – Gagravarr

+0

예, SXSSF는 향후 프로젝트에서 사용할 것입니다 ..... 나중에 알게 되니 –

+0

같은 문제에 직면 해 있습니다! 결국 당신은 무엇을 했습니까? –

답변

29

첫 번째 선택의 첫 번째 행 또는 전용 헤더 행에 당신에게 세포의 최대 개수를 줄 수 있기 때문에 헤더.

HSSFRow row = wb.getSheetAt(0).getRow(0); 

그런 다음 행

for(int colNum = 0; colNum<row.getLastCellNum();colNum++) 
    wb.getSheetAt(0).autoSizeColumn(colNum); 

이 헤더 폭과 동일한 컬럼 너비를 설정한다 각 열에 autoSizeColumn을 사용한다.

4

또한 sxssf를 사용하는 것이 좋습니다. 그것을 XML 형식으로 Excel에로드합니다. 이것은 훨씬 빠르고 더 큰 방법으로 큰 보고서 나 그리드를 생성 할 수 있습니다. xssf의 자동 크기 조정 기능은 기본적으로 너무 오래 걸립니다.

3

sheet.autoSizeColumn (columnNumber)가 작동합니다. 이 열의 크기를 가장 큰 셀 길이로 조정합니다.