gpt4 book ai didi

java - Apache POI getRow() 返回 null 并且 .createRow 失败

转载 作者:搜寻专家 更新时间:2023-10-30 21:09:10 24 4
gpt4 key购买 nike

我在使用 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,我需要 createRow()。根据 .getPhysicalRows()、.getFirstRowNum() 和 .getLastRowNum()

,工作表不包含任何行

谢谢。

最佳答案

请参阅以 XSSFWorkbook 作为参数的 SXSSFWorkbook 构造函数的文档。您不能覆盖或访问模板文件中的初始行。您正在尝试覆盖现有行,而 API 不支持此操作。您的异常消息反射(reflect)了这一点。

https://poi.apache.org/apidocs/org/apache/poi/xssf/streaming/SXSSFWorkbook.html#SXSSFWorkbook(org.apache.poi.xssf.usermodel.XSSFWorkbook)

对于您的用例,您可能想尝试 http://jxls.sourceforge.net .

关于java - Apache POI getRow() 返回 null 并且 .createRow 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30868325/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com