Apache POI getRow()가 null을 반환하고 .createRow가 실패함
Apache POI v3.12를 사용할 때 다음과 같은 문제가 발생했습니다. 49개의 행이 있는 XLSX 파일을 사용해야 합니다 [0..48] 템플릿으로 셀을 데이터로 채우고 다른 파일로 작성하면 템플릿을 다시 사용할 수 있습니다.제가 하는 일은 대략 다음과 같습니다.
XSSFWorkbook wbk_template = new XSSFWorkbook(new FileInputStream (f_wbk_template));
SXSSFWorkbook wbk = new SXSSFWorkbook(wbk_template, 50, true);
Sheet sheet = wbk.getSheet(STR_SHEET_NAME);
나중에/
Row row = sheet.getRow(rownum);
if (null == row) {
row = sheet.createRow(rownum);
}
디버깅 시 getRow()가 null을 반환하지만 .createRow() 시도가 실패하고 다음 오류가 발생합니다.
java.lang.IllegalArgumentException: Attempting to write a row[2] in the range [0,48] that is already written to disk.
at org.apache.poi.xssf.streaming.SXSSFSheet.createRow(SXSSFSheet.java:122)
...
내가 뭘 빠트렸나요?Apache 문서 및 포럼에서 읽은 바로는 getRow()가 null을 반환하면 Row()를 생성해야 합니다.시트에 .getPhysicalRows(), .getFirstRowNum() 및 .getLastRowNum()에 따른 행이 없습니다.
감사해요.
자세한 내용은 설명서를 참조하십시오.SXSSFWorkbook
다음을 수행하는 생성자XSSFWorkbook
파라메타로템플릿 파일의 초기 행을 재정의하거나 액세스할 수 없습니다.기존 행을 덮어쓰려고 하는데 API가 이를 지원하지 않습니다.예외 메시지는 이를 반영합니다.
사용 사례는 http://jxls.sourceforge.net 을 사용해 보는 것이 좋습니다.
기존 행을 읽거나 편집하려면 먼저 다음에서 수행할 수 있습니다.xssf
를 입력한 다음 생성합니다.sxssf
파일 기반xssf
파일.
코드는 아래와 같습니다.
XSSFWorkbook xssfWorkbook = new XSSFWorkbook(new FileInputStream(file));
//do the read and edit operation with xssf......
......
......
SXSSFWorkbook sXSSFbook = new SXSSFWorkbook(xssfWorkbook);
//do the write operation with sxssf......
......
......
이 생성자 인수를 확인하십시오.
XSSFWorkbook workbook = new XSSFWorkbook(new FileInputStream(exportExcelTo));
SXSSFWorkbook sxssfWorkbook = new SXSSFWorkbook(workbook, -1, Boolean.FALSE, Boolean.TRUE);
언급URL : https://stackoverflow.com/questions/30868325/apache-poi-getrow-returns-null-and-createrow-fails
'programing' 카테고리의 다른 글
VBA에서 C++ DLL로 문자열 전달 중 (0) | 2023.06.09 |
---|---|
FCM을 사용하여 특정 사용자에게 알림을 보내는 방법은 무엇입니까? (0) | 2023.06.09 |
Ruby <=> (로컬) 연산자란 무엇입니까? (0) | 2023.06.09 |
node_modules 폴더 안에 있는 스크립트를 포함하는 방법은 무엇입니까? (0) | 2023.06.09 |
아이폰 시뮬레이터에서 카메라를 테스트하려면 어떻게 해야 합니까? (0) | 2023.06.09 |