Apache POI getRow() 返回 null,而 .createRow 失败
2022-09-03 02:06:54
我在使用Apache POI v3.12时遇到了以下问题:我需要使用具有49行[0..48]的XLSX文件作为模板,用数据填充其单元格并将其写出为其他文件,以便我可以再次重用该模板。我正在做的大致是这样的:
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()
谢谢。