没有合适的资源?快使用搜索试试~ 我知道了~
java向excel 写入海量数据内存溢出问题的解决.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 128 浏览量
2021-09-13
19:35:53
上传
评论
收藏 64KB PDF 举报
温馨提示
试读
2页
...
资源推荐
资源详情
资源评论
java 向 excel 写入海量数据内存溢出问题的解决
由于项目中有导出海量数据的需求,在谷歌和百度也没有找到好的解决办法,经过
仔细研究发现 poi-3.8 版本以上提供新的模式可以满足这个需求。
以下是测试代码:
import java.io.FileOutputStream;
import org.apache.commons.lang.exception.ExceptionUtils;import
org.apache.poi.ss.usermodel.Cell;import org.apache.poi.ss.usermodel.Row;import
org.apache.poi.ss.usermodel.Sheet;import org.apache.poi.ss.usermodel.Workbook;import
org.apache.poi.ss.util.CellReference;import
org.apache.poi.xssf.streaming.SXSSFWorkbook;import
org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class Test {
/*** @param args*/public static void main(String[] args) {if (args[0].equals("hssf"))
{hssfTest();}if (args[0].equals("sxssf")) {sxssfTest();}
}
public static void sxssfTest() {Workbook wb = new SXSSFWorkbook(100); // keep 100 rows
in memory,// exceeding rows will be// flushed to diskSheet sh = wb.createSheet();int rownum
= 0;try {while (true) {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);}System.out.println(rownum
);rownum++;if (rownum >= 1000000)break;}
FileOutputStream out = new FileOutputStream("c:/sxssf.xlsx");wb.write(out);out.close();}
catch (Exception e) {System.out.println(ExceptionUtils.getFullStackTrace(e));}
}
public static void hssfTest() {XSSFWorkbook wb = new XSSFWorkbook();Sheet sh =
wb.createSheet();int rownum = 0;try {while (true) {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);}System.out.println(rownum
);rownum++;if (rownum >= 1000000)break;}
FileOutputStream out = new FileOutputStream("c:/hssf.xlsx");wb.write(out);out.close();}
catch (Exception e) {System.out.println(ExceptionUtils.getFullStackTrace(e));}}}
将 工 程 打 包 成 jar 到 C :, 然 后 用 命 令 行 java -jar -Xms128m -Xmx512m
-XX:PermSize=128M -XX:MaxPermSize=512M test.jar hssf 执行,在命令行窗口输出到
45000 之后,输出明显减慢,
很快输出如下异常:
5028850289502905029150292Exception in thread “main”
java.lang.reflect.InvocationTargetExceptionat
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)at
org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)Caused by:
资源评论
苦茶子12138
- 粉丝: 1w+
- 资源: 6万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Picasso_v3.1 2.ipa
- chromedriver-mac-arm64.zip
- 蓝zapro.apk
- chromedriver-linux64.zip
- UCAS研一深度学习实验-MNIST手写数字识别python源码+详细注释(高分项目)
- 基于Python和PyTorch框架完成的一个手写数字识别实验源码(带MINIST手写数字数据集)+详细注释(高分项目)
- 基于Matlab在MNIST数据集上利用CNN完成手写体数字识别任务,并实现单层CNN反向传播算法+源代码+文档说明(高分项目)
- NVIDIA驱动、CUDA和Pytorch及其依赖
- 基于SVM多特征融合的微表情识别python源码+项目说明+详细注释(高分课程设计)
- html动态爱心代码一(附源码)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功