Apache POI getRow()返回null,.createRow失败
我使用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); }
debugging后发现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,我需要createRow()。 根据.getPhysicalRows(),.getFirstRowNum()和.getLastRowNum(),表单不包含任何行。
谢谢。
请参阅将XSSFWorkbook
作为参数的SXSSFWorkbook
构造函数的文档。 您无法覆盖或访问模板文件中的初始行。 您正试图覆盖现有的行,并且API不支持此行。 你的exception信息反映了这一点
对于你的用例,你可能想尝试http://jxls.sourceforge.net 。
- 如何在Apache POI中自动区分XSSF和HSSF?
- 在ApachePOI中使用什么来代替弃用的CellRangeAddress.valueOf
- POI无法打开工作簿来打开.xls文件和eclipse抛出exception
- 阅读MS Excel使用Apache POI
- 而将Excel转换为.csv文件,我不能够转换date,并将其保存在CSV文件?
- 使用Apache POI在Android中读取MS Excel 2010文件
- Apache POI Event用户模型将Timestamp值读取为double
- 在Java中使用poi与中文字符写.xlsx文件
- 使用Apache POI库将Excel Spreadsheets转换为HTML