java - 如何使用 POI 更新特定单元格而不修改同一行的任何其他数据?
问题描述
嗨,我对如何使用带有SXSSFWorkbook
类的 Apache poi 更新特定单元格感到非常困惑。让我描述一下我的尝试:
加载已经存在的文件:
final String FILE_NAME = "./sxssf_example.xlsx";
FileInputStream excelInputStream = new FileInputStream(new File(FILE_NAME));
XSSFWorkbook wb = new XSSFWorkbook(excelInputStream);
我对其余代码的第一次尝试
SXSSFWorkbook wbss = new SXSSFWorkbook(wb,100);
Sheet swbss = wb.getSheetAt(0);
Row row0 = swbss.createRow(0);
Cell cell = row0.createCell(0);
cell.setCellValue("jkkjh");
final String FILE_NAME2 = "./new.xlsx";
FileOutputStream outputStream = new FileOutputStream(FILE_NAME2);
wbss.write(outputStream);
outputStream.close();
wbss.dispose();
wbss.close();
这生成了 new.xls,单元格被更新,但是它删除了同一行的任何其他列的数据
我对其余代码的第二次尝试
SXSSFWorkbook wbss = new SXSSFWorkbook(wb,100);
Sheet swbss = wbss.getSheetAt(0);
Row row0 = swbss.createRow(0);
Cell cell = row0.createCell(0);
cell.setCellValue("jkkjh");
final String FILE_NAME2 = "./new.xlsx";
FileOutputStream outputStream = new FileOutputStream(FILE_NAME2);
wbss.write(outputStream);
outputStream.close();
wbss.dispose();
wbss.close();
这个把我扔了
Exception in thread "main" java.lang.IllegalArgumentException: Attempting to write a row[0] in the range [0,499] that is already written to disk.
at org.apache.poi.xssf.streaming.SXSSFSheet.createRow(SXSSFSheet.java:145)
at org.apache.poi.xssf.streaming.SXSSFSheet.createRow(SXSSFSheet.java:65)
at testPOI.SXSSFExample.main(SXSSFExample.java:61)
然后我尝试了一些修改并在实例上进行了尝试,但这让我越来越困惑。我真的需要一些帮助。谢谢你。
解决方案
如果电子表格中已经存在任何信息,那么您可能不应该创建行和单元格,而是先获取您需要的内容,然后修改单元格。这意味着:
- 获取工作簿
- 获取工作表
- 获取行
- 获取单元格
- 更新单元格
- 写到工作簿
这应该为您提供您可能需要的指针:https ://poi.apache.org/components/spreadsheet/quick-guide.html 。
推荐阅读
- asp.net-core - AutoMapper - IMapper.Map 上非常零星的 StackOverflowException
(...) 称呼 - php - PHP file_get_contents() 在发出 GET 请求时忽略请求正文
- google-apps-script - Google 应用 为许多用户部署脚本网络应用
- rust - Rust:如何将字节连接在一起
- android - 试图让 RecyclerView 使用不同的数据集
- javascript - 扩展运算符与没有角度扩展之间的区别
- reactjs - 反应,尝试只使用一次 setState
- javascript - 按变量获取变量
- mysql - MySQL - 计算每个员工每月的收入
- rust - 如何实现来自未来函数的流