-
用poi 写入大数据量到excel2007,总是报错,“Java heap space”,求解决....6
用poi生成excel2007 创建XSSFWorkbook对象
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook .createSheet("这里第一页");
FileOutputStream fos = new FileOutputStream("D://test//test0215.xlsx");
for (int i = 0; i < 100000; i++) {
sheet.createRow(i).createCell(0).setCellValue(1);
}
workbook .write(fos);[size=small]
fos.close();
上面测试例子,写入excel第一列,全为1,写入10w行,超过一定的数据量,比如10w,就会报“Exception in thread "main" java.lang.OutOfMemoryError: Java heap space” ,求解决方案????2012年2月16日 10:40
3个答案 按时间排序 按投票排序
-
采纳的答案
是用最新版的poi ,这个问题已经解决了,利用缓存的cell,不创建更多的对象实例,导致heap 回收不了。SXSSFWorkbook关键是这个类的使用
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);
2012年2月16日 12:48
-
可以修改此导出方式,仅仅通过流的方式写入文件,可以避免创建大批量的对象时内存溢出.代码如下可以作为参考:
public static boolean createExcelFileByStream(String path, List list) {
try {
//定义表头
String userxlsinfo = "序号\t用户ID\t姓名\t手机\t留言信息";
File file = new File("c:\\streamExcel.xls");
if (file.isFile()) {
file.mkdir();
}
FileOutputStream out = new FileOutputStream(file);
OutputStreamWriter osw = new OutputStreamWriter(out, "GB2312");
BufferedWriter bw = new BufferedWriter(osw);
// 创建表头
String sheader = userxlsinfo;
sheader += "\r\n";
bw.write(sheader);
if (list != null) {
// List list 此处可以遍历list对象
for (int i = 0; i < 5; i++) {
StringBuffer mess = new StringBuffer();
// 用户信息
mess.append((i + 1) + "\t");
mess.append((i + 1) + "\t");
mess.append((i + 1) + "\t");
mess.append((i + 1) + "\t");
mess.append((i + 1) + "\t");
mess.append("\r\n");
System.out.println(i);
bw.write(mess.toString());
}
}
bw.close();
osw.close();
out.close();
return true;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
注意:表头部分和数据部分的间隔一定要用'\t ' 如果改用','号则导出文件用excel打开展示会有问题.
2012年2月16日 11:23
相关推荐
然而,当处理大数据量的Excel文件时,POI可能会导致内存溢出(Out of Memory, OOM),因为默认情况下它会将整个工作簿加载到内存中。为了防止这种问题,我们需要采用优化策略来高效地处理大量数据。 1. **分块读取*...
"使用POI导出大数据量到EXCEL"这个主题涉及到如何高效地利用POI处理大量数据并将其导出到Excel文件中。以下是对这个主题的详细讲解。 1. **Apache POI简介** Apache POI 是一个开源项目,它提供了Java API来创建、...
在Java编程中,处理大数据量的Excel文件是一项挑战,因为Excel文件可能包含成千上万行数据。Apache POI是一个流行的库,专为处理Microsoft Office文档(如Excel)而设计,它提供了API来读取、写入和修改这些文件。在...
本篇文章将详细讲解如何利用Apache POI库在Android环境中高效地处理大数据量的Excel文件,无论是2003的.xls格式还是2007及以后的.xlsx格式。 首先,我们需要在项目中引入Apache POI库。如果是Maven项目,可以在pom....
### Java POI 大量数据导出到Excel详解 #### 一、背景介绍 在日常工作中,经常需要处理大量的数据并将其导出为Excel文件,特别是在金融、电商等行业。Java POI库作为一款强大的用于读写Microsoft Office文档的Java ...
本篇文章将详细讲解如何利用Apache POI库来读取Excel数据并将其写入到Word文档中。 首先,我们需要了解Apache POI的基本概念。POI提供了一组API,允许程序员在Java应用程序中创建、修改和显示这些文件。对于Excel...
本文将详细讲解如何利用POI将数据写入到Excel文档。 首先,你需要确保已经设置了Maven项目,并在pom.xml文件中添加了Apache POI的依赖。POI的最新版本通常可以在这里找到:...
poi读取大量数据会造成gc内存溢出的报错,由于垃圾回收机制无法将大量的对象及时的回收,而这些对象又会保存在内存中,会导致内存不够用的情况,这时候我们就需要使用新的方法,读取为cvs即可.此解决方案可支持千万数据的...
android 使用poi读取高版本excel, 解决以下这两个错误 java.lang.NoClassDefFoundError: Failed resolution of: Ljavax/xml/stream/XMLEventFactory; at org.apache.poi.openxml4j.opc.internal.marshallers....
在Java开发中,Apache POI库是一个非常常用的工具,它允许开发者读取、写入和修改Microsoft Office格式的文件,包括Excel。然而,在处理Excel文件时,有时可能会遇到一些异常情况,比如“LeftoverDataException”。...
在处理大数据量的Excel文件时,Java是一种常用的语言,因为它提供了强大的库,如Apache POI,使得解析大型Excel文件成为可能。Apache POI是Java的一个开源项目,专门用于读写Microsoft Office格式的文件,包括Excel...
POI处理excel文件,主要包括Excel的读取、写入,各种数据格式处理、单元格合并、注释、下拉列表及单元格的边框、背景色、宽度调整等。
标题中的“POI实现大数据量的excel文件解析”是指使用Apache POI库来处理大量数据的Excel文件。Apache POI是Java平台上的一个开源项目,它提供了读取和写入Microsoft Office格式文件的能力,包括Excel(XLS和XLSX)...
Java POI 实现 Excel 导入导出 Java POI 是一个流行的 Java 库,用于处理 Microsoft Office 文件格式,包括 ...在本文中,我们已经详细介绍了如何使用 Java POI 实现 Excel 导入导出功能,包括读取和写入 Excel 文件。
该jar包解决报错java.lang.NoClassDefFoundError: org/apache/james/mime4j/MimeException,亲测可用。
使用poi解析excel文件,并将数据写入到数据库 项目说明 这个项目实现的功能是读取excel文件中的数据,解析并写入数据库。 读取的excel文件位于项目目录下的 excel\0805.xlsx 使用IntelliJ IDEA开发此项目 使用MYSQL...
Apache POI是一个流行的库,它允许开发者使用Java来读取、写入和修改Microsoft Office格式的文件,包括Excel(.xlsx, .xls)。在本项目中,我们结合了POI库和XML技术来实现Excel数据的验证与导入数据库。 首先,...
在Java开发中,批量导出大数据量到Excel是一项常见的任务,尤其在数据分析、报表生成或者数据交换场景下。为了高效地处理这种情况,开发者通常需要掌握一些特定的技术和策略。本资料"Java_批量导出大数据量Excel方法...
apache poi解析Excel时报错,我将Excel打开后保存,就不会报错,我将重写的类从新打包这样问题虽然网上有解决方案,但是需要自己打包重写对应类,我已将这些步骤做好了。
解决net.sf.jxls1.0.6中getCellType()和org.apache.poi4.1.2报错问题