gpt4 book ai didi

java - 如何使用java将工作表添加到现有的大型Excel文件(20MB)?

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

我有一个大小为 20MB 的 Excel 文件。我想向该文件添加一个新工作表。我为此使用 Apache POI。但是当我加载工作簿时,我在下面一行收到堆内存异常:

XSSFWorkbook workbook = new XSSFWorkbook(new FileInputStream(new File(fileName)));

我尝试寻找替代方案,但每个人都建议增加我的堆内存,但我无法在服务器端执行此操作。请帮助我!

还有一件事!是否可以通过opcpackage在现有的excel文件中创建一个新的工作表。如果是,怎么办?

下面是代码供您引用:

public static void main(String[] args) {
try {
OPCPackage pkg = OPCPackage.open(new File("fileName.xls"));
XSSFWorkbook wb = new XSSFWorkbook(pkg);
System.out.println("Number of sheets: " + wb.getNumberOfSheets());
pkg.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvalidFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

我遇到以下异常:

java.lang.OutOfMemoryError: Java heap space

行:

XSSFWorkbook wb = new XSSFWorkbook(pkg);

谢谢!

最佳答案

如果内容不太复杂可以使用streaming-input功能并以流输出方式使用该数据构造一个新的 SXSSFWorkbook,因此不需要将完整的工作簿保存在内存中。

还有更多elaborate example这展示了如何以流媒体方式读取信息。

如果源文档中应用了大量样式/格式,那么这自然会很复杂。

关于java - 如何使用java将工作表添加到现有的大型Excel文件(20MB)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39077210/

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