programing

Apache POI 3.6을 사용하여 Excel 시트에서 255개 이상의 열을 얻는 방법

css3 2023. 7. 9. 12:34

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.usermodel2007년 이후 시트의 객체 모델은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