POI 解决写入excel内存溢出
来源:互联网 发布:西南证券软件手机 编辑:程序博客网 时间:2024/05/04 14:52
POI写入excel表
下面是结构图
大批量数据读取写入的问题
在项目中遇到二十万行数据要写入到excel中时会内存溢出,一般方法是调大tomcat的内存,但是调到2048M还是会内存溢出报错
poi官网给了一种大批量数据写入的方法
使用SXXFWorkbook 类进行大批量写入操作解决了这个问题
import junit.framework.Assert;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; public static void main(String[] args) throws Throwable { SXSSFWorkbook wb = new SXSSFWorkbook(100); // keep 100 rows in memory, exceeding rows will be flushed to disk Sheet sh = wb.createSheet(); for(int rownum = 0; rownum < 1000; 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); } } // Rows with rownum < 900 are flushed and not accessible for(int rownum = 0; rownum < 900; rownum++){ Assert.assertNull(sh.getRow(rownum)); } // ther last 100 rows are still in memory for(int rownum = 900; rownum < 1000; rownum++){ Assert.assertNotNull(sh.getRow(rownum)); } FileOutputStream out = new FileOutputStream("/temp/sxssf.xlsx"); wb.write(out); out.close(); // dispose of temporary files backing this workbook on disk wb.dispose(); }
通过设置SXXFWorkbook的构造参数,可以设置每次在内存中保持的行数,当达到这个值的时候,那么会把这些数据flush到磁盘上,这样就不会出现内存不够的情况
参考地址: http://poi.apache.org/spreadsheet/how-to.html#sxssf
0 0
- POI 解决写入excel内存溢出
- POI解决读入Excel内存溢出
- 解决POI读取Excel内存溢出的问题
- 解决POI读取Excel内存溢出的问题
- 解决POI导出Excel文件内存溢出问题
- POI生成excel数据量大时内存溢出解决
- 解决POI读取Excel内存溢出的问题
- 解决POI读取Excel内存溢出的问题
- 解决POI解析excel出现内存溢出问题
- 解决POI大数据导出Excel内存溢出、应用假死
- 解决POI读取Excel内存溢出的问题
- poi解析excel内存溢出
- poi导出excel内存溢出解决办法
- POI 操纵EXCEL 写入内存,下载
- POI : 解决大批量数据导出Excel产生内存溢出的方案
- poi解决内存消耗过大溢出问题
- Apache POI组件读取Excel文档内存溢出
- JAVA关于POI导出Excel内存溢出的解决方案
- Android studio运行app到手机上时报error running app(instant run)错误接决方案
- dpi 、 dip 、分辨率、屏幕尺寸、px、density 关系以及换算
- 运算符
- java基础1_学习大纲
- 1102-关于pmic的两个probe函数和驱动加载顺序
- POI 解决写入excel内存溢出
- codeforces contest 479
- 如何在终端运行jar文件
- 自定义view学习笔记
- 数据库分区分表
- php获取当天0点的时间戳
- 408 《计算机组成原理》 第四章 指令系统
- ios跳转页面 有键盘闪现出来又消失
- Java文件输入输出以及判断是否读尽文件中的数