Apache POI 3.6을 사용하여 Excel 시트에서 255개 이상의 열을 얻는 방법
엑셀로 달력을 만들고 있습니다.1열은 2010년 1월 1일(dd)입니다.MM.yyyy), 열 2는 2010년 1월 2일과 같이 표시됩니다.
내 코드는 다음과 같습니다.
int day_cell = 0;
for(int i = 0; i < days.size(); i++)
{
Date day = days.get(i);
HSSFCell cell = row.createCell(day_cell++);
cell.setCellValue(day.toString());
}
256열 POI에 도달하면 다음 예외가 발생합니다.
java.lang.IllegalArgumentException: Invalid column index (256). Allowable column range for BIFF8 is (0..255) or ('A'..'IV')
at org.apache.poi.hssf.usermodel.HSSFCell.checkBounds(HSSFCell.java:926)
at org.apache.poi.hssf.usermodel.HSSFCell.<init>(HSSFCell.java:162)
at org.apache.poi.hssf.usermodel.HSSFRow.createCell(HSSFRow.java:141)
at org.apache.poi.hssf.usermodel.HSSFRow.createCell(HSSFRow.java:119)
3.6 릴리스에서 수정되었음을 시사하는 버그 보고서를 발견했습니다.우리는 3.5를 사용하고 있었지만 3.6으로 변경하는 것은 아무런 도움이 되지 않는 것 같습니다.팁 있는 사람?
https://issues.apache.org/bugzilla/show_bug.cgi?id=46806
편집: 버그 이슈는 공식에 관한 것인 것 같습니다.
2007년 이전의 엑셀 시트는 256열로 제한되었습니다.이러한 시트는 확장자 ".xls"도 생성합니다.Excel 2007 이상은 16K 열을 수용할 수 있으며 XML 형식을 기반으로 하며 ".xlsx" 형식을 생성합니다.2007년 이전 시트의 POI 객체 모델은 다음과 같습니다.org.apache.poi.hssf.usermodel
2007년 이후 시트의 객체 모델은org.apache.poi.xssf.usermodel
패키지org.apache.poi.ss.usermodel
두 개체 모델을 모두 포함하는 균일한 인터페이스를 제공합니다.따라서 256개 이상의 열을 생성하려면 다음과 같은 클래스를 사용해야 합니다.org.apache.poi.xssf.usermodel
포장 또는 내부org.apache.poi.ss.usermodel
.
API가 아닌 Excel에 문제가 있을 수 있습니다.
Excel 2007 이전 스프레드시트의 최대 열 수는 256개입니다.
난 이해했다.org.apache.poi.hssf.user 모델에서 org.apache.poi.ss.user 모델로 전환해야 했습니다.
이를 통해 16k 열 등을 사용할 수 있습니다.
1년 중 며칠 동안 65,000개의 행을 사용할 수 있도록 세로에서 가로로 전환(즉, 데이터를 전환)하는 것을 고려할 수 있습니다.이것이 바로 제가 많은 열과 적은 행 수를 요구하는 보고서에서 한 일입니다.
또는 한 해를 6개월의 하위 기간으로 분할할 수 있으며, 각 기간은 자체 시트에 표시됩니다.
이 두 가지 모두 임시방편 솔루션이지만, 요구 사항에 따라 "충분히 좋은" 솔루션을 제공할 수도 있습니다.
Excel에는 숫자 열이 제한되어 있기 때문입니다. 다음을 참조: http://office.microsoft.com/en-us/excel-help/excel-specifications-and-limits-HP005199291.aspx
Apache POI를 사용하여 Excel 시트에서 255개 이상의 열을 가져오는 방법
해라
Workbook workbook = new XSSFWorkbook()
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>`enter code here`
<version>3.15</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.15</version>
</dependency>
언급URL : https://stackoverflow.com/questions/2326668/how-to-get-more-than-255-columns-in-an-excel-sheet-using-apache-poi-3-6
'programing' 카테고리의 다른 글
일부 Git 저장소에서 Git 저장소의 이름을 어떻게 얻습니까? (0) | 2023.07.09 |
---|---|
1D 배열을 2D 배열로 변환(numpy) (0) | 2023.07.09 |
SpringBootTest의 @DataJpaTest에서 구성 클래스를 가져오려면 어떻게 해야 합니까? (0) | 2023.07.09 |
각도 오류: '구성 요소 'X'가 모듈에 포함되어 있지 않습니다.하위 모듈에 선언된 경우 (0) | 2023.07.09 |
소규모 개발 팀을 위한 Git 브랜치 전략 (0) | 2023.07.09 |