POI操作Excel时最大行、列数的问题及写大量数据时Java heap space内存溢出解决
2017-08-14 10:19
1701 查看
如果你从开始菜单中启动excel2007,默认是: 1048576 如果你保存或者打开类型为excel工作簿(.xlsx): 1048576 如果你保存或者打开类型为97-2003工作簿(.xls): 65536
public class MaxRowsTest {public static void main(String[] args) {SXSSFWorkbook wb = new SXSSFWorkbook();Sheet sheet = wb.createSheet();for (int i = 0; i < 1048577; i++) {Row row = sheet.createRow(i);Cell cell = row.createCell(0);cell.setCellValue("我是第:" + i + " 条数据");}File file = new File("C:\\Users\\Administrator\\Desktop" + File.separator + "MaxRows.xlsx");OutputStream os;try {os = new FileOutputStream(file);wb.write(os);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
当写入的数据超过最大限制时:
Exception in thread "main" java.lang.IllegalArgumentException: Invalid row number (1048576) outside allowable range (0..1048575)at org.apache.poi.xssf.streaming.SXSSFSheet.createRow(SXSSFSheet.java:92)at com.energyfuture.poitest.MaxRowsTest.main(MaxRowsTest.java:34)
写大量数据时,发生 Java heap space 内存溢出时的解决办法:是用最新版的poi ,这个问题已经解决了,利用缓存的cell,不创建更多的对象实例,导致heap 回收不了。SXSSFWorkbook关键是这个类的使用Java代码 FileOutputStream out = new FileOutputStream(new File("D://result.xlsx")); Workbook writeWB = new SXSSFWorkbook(500); Sheet writeSheet = writeWB.createSheet(); for (int rr = 0; rr < 400000; rr++) { Row writeRow = writeSheet.createRow(rr); for (int cc = 0; cc < 10; cc++) { writeRow.createCell(cc).setCellValue("测试" + rr + "," + cc); } } writeWB.write(out);
相关文章推荐
- 解决java web开发中常见的大量数据导出Excel超时(504)问题
- 【ASP.NET 问题】System.InvalidOperationException: 对象的当前状态使该操作无效 【大量表单数据提交】错误解决
- Ado.Net操作Excel文件数据常见问题及解决
- 使用poi导出大量数据到excel遇到的问题
- 解决 POI 操作2007格式的Excel报错问题:java.lang.ClassNotFoundException: org.apache.xmlbeans.XmlOptionsz
- Ado.Net操作Excel文件数据常见问题及解决
- 解决Java导入excel大量数据出现内存溢出的问题
- 大量数据生成excel时候造成jvm内存泄漏问题的解决与测
- OLEDB方式操作规则EXCEL的字符串的完整写法(解决标题行和列数据类型不一致的问题)
- java web开发中大量数据导出Excel超时(504)问题解决
- [原创]大量数据导出为Excel文件的问题解决(C#,ASP.NET)
- 大量数据导出为Excel文件的问题解决
- Ado.Net操作Excel文件数据常见问题及解决
- POI操作大数据量Excel时,new SXSSFWorkbook(1000)实例化失败问题解决
- POI实现超大数据的Excel的读写操作,支持Excel最大行数。
- 大量数据生成excel时候造成jvm内存泄漏问题的解决与测
- PL/SQL Developer导出大量数据到excel的快速方法,解决数据量大导出慢的问题
- 解决 C++ 操作 MySQL 大量数据插入效率低下问题
- 【Python数据分析】Python3操作Excel(二) 一些问题的解决与优化
- .net解决数据导出excel时的格式问题