gpt4 book ai didi

java - 使用 SXSSF (POI) 读取模板 xlsm 并将大数据写入现有工作表

转载 作者:行者123 更新时间:2023-11-30 09:16:07 26 4
gpt4 key购买 nike

我能够使用 XSSF 读取现有的 xlsm,并使用 SXSSF 将数据写入工作表。最后使用 Outputstream 将其输出为另一个 xlsm。
SXSSF在文档中提到用于编写xlsx
读取和写入大数据的 xlsm 是否是正确的方法,或者如果通过此解决方案完成,文件将被损坏?
这是有效的示例代码,

public static void main(String[] args) throws Throwable {

OPCPackage pkg = OPCPackage.open(new File("sample.xlsm"));
XSSFWorkbook wb_template;
wb_template = new XSSFWorkbook(
pkg
);
System.out.println("package loaded");
SXSSFWorkbook wb = new SXSSFWorkbook(wb_template);
wb.setCompressTempFiles(true);

SXSSFSheet sh = (SXSSFSheet) wb.createSheet();
sh.setRandomAccessWindowSize(100);// keep 100 rows in memory, exceeding rows will be flushed to disk
for(int rownum = 4; rownum < 5000; rownum++){
Row row = sh.createRow(rownum);
for(int cellnum = 0; cellnum < 10; cellnum++){
Cell cell = row.createCell(cellnum);
String address = new CellReference(cell).formatAsString();
cell.setCellValue(address);
}

}
FileOutputStream out = new FileOutputStream(new File("C:\\ouput\\new_file.xlsm"));
wb.write(out);
out.close(); }

最佳答案

我看不出您当前的代码有什么问题,但是在 apache website 上它说 SXSSF 会在您的计算机上留下临时文件,您必须按如下方式调用处置:

Note that SXSSF allocates temporary files that you must always clean up explicitly, by calling the dispose method.
SXSSFWorkbook wb = new SXSSFWorkbook(100);
// dispose of temporary files backing this workbook on disk
wb.dispose();

我建议执行处置,因为它似乎可以防止存储剩余信息。关于这是否是正确的方法,我建议拿一个测试文件并进行几次,这段代码的执行情况将受到您的系统(cpu 功率、内存等)和您的文件大小的影响处理。

祝你好运!

关于java - 使用 SXSSF (POI) 读取模板 xlsm 并将大数据写入现有工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19535436/

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