在java web系统应用中我们经常会用到大批量数据的导出,动辄就上几十万几百万的数据让我们的程序感觉压力很大,甚至都出现无法导出的情况,如内存溢出等。
在这里给大家提供一种思路:分多个文件导出,在生成文件的过程中注意回收内存,
System.out.println("---------------------"); File directory=null; String zipPath=null; String taskId = datas[0]; String diffFlag = datas[1]; try { directory = new File(String.valueOf(System.currentTimeMillis())); directory.mkdir(); String directoryPath = directory.getAbsolutePath(); StringBuffer buffer = new StringBuffer("select t.id,t.phone,t.diff_flag from "); buffer.append(" dcs_task_user_diff_" + taskId + " t where t.diff_flag='" + diffFlag + "' and rownum <=1000000"); Connection connection = GetDBConnection.getConnection(); Statement createStatement = null; createStatement = connection.createStatement(); ResultSet resultSet = createStatement.executeQuery(buffer.toString()); int p=0; int i=0; int j=0; HSSFWorkbook workbook=null; File file=null; HSSFSheet createSheet=null; FileOutputStream fileOutputStream=null; int countPerFile = 50000; int countPerSheet =5000; while (resultSet.next()) { if(i%countPerFile==0){ int countfile=(i/countPerFile+1); String fileName=directoryPath+File.separator+countfile+".xls"; System.out.println("创建第"+fileName); workbook=new HSSFWorkbook(); file=new File(fileName); j=0; } if(j%countPerSheet==0){ int sheetCount=(j/countPerSheet+1); System.out.println(" 创建第"+sheetCount+"个sheet"); createSheet=workbook.createSheet(sheetCount+"sheet"); System.gc(); p=0; HSSFRow createRow = createSheet.createRow(p); createRow.createCell(0).setCellValue(new HSSFRichTextString("编号")); createRow.createCell(1).setCellValue(new HSSFRichTextString("手机号")); p++; } HSSFRow createRow = createSheet.createRow(p); createRow.createCell(0).setCellValue(new HSSFRichTextString(resultSet.getString("id"))); createRow.createCell(1).setCellValue(new HSSFRichTextString(resultSet.getString("phone"))); i=i+1; j=j+1; p++; if(j%countPerSheet==0||j==1){ fileOutputStream = new FileOutputStream(file); workbook.write(fileOutputStream); fileOutputStream.flush(); } if(j%countPerFile==0){ workbook.write(fileOutputStream); fileOutputStream.flush(); fileOutputStream.close(); } } if(fileOutputStream!=null){ fileOutputStream = new FileOutputStream(file); workbook.write(fileOutputStream); fileOutputStream.flush(); } GetDBConnection.destroyConnection(connection, createStatement); System.out.println(file.getAbsolutePath()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } zipPath= JasperExportHelper.CreateZipFile(directory.getAbsolutePath(), directory.getAbsolutePath()+".zip"); System.out.println(zipPath); return zipPath;
相关推荐
java使用POI导出 Excel+图片工具类 ,里面含有poi jar包,只调用接口即可直接保存Excel。使用的时候需先把数据封装,具体包装需根据实际导出数据进行处理。文件demo中只提供包装格式。
使用Java POI,可以将图片导出到Excel中,这需要使用到Drawings类和Picture类。首先,需要创建一个Drawings对象,然后使用Drawings对象的addPicture方法将图片添加到Excel中。 3. 使用Java POI下载Excel文件 在示例...
在本文中,我们将详细介绍如何使用 Java POI 实现 Excel 导入导出功能。 1. 什么是 Java POI Java POI 是一个开源的 Java 库,由 Apache 软件基金会维护。它提供了一系列的 API,用于处理 Microsoft Office 文件...
本篇文章将深入讲解如何使用POI库在Java中实现Excel的导出功能,以及涉及到的相关jar包及其作用。 首先,`poi-ooxml-schemas-3.15-beta1.jar`是POI库中的XML schema定义,用于解析和创建符合Office Open XML标准的...
在Java中,如果你需要导出Excel文件,Java POI是一个非常实用的工具。下面将详细介绍如何使用Java POI来实现Excel的导出。 1. **引入依赖** 在Java项目中使用POI,首先需要在项目的构建文件(如Maven的pom.xml或...
java的poi的导入工具类,只需要传入两个arrayList,一个是execl的标题,一个是ececl的数据,就可以直接导出到execl里面,支持最新的execl,全新封装的,让每一个人都会使用poi导出execl!
在Java中,Apache POI库提供了对微软Office文档格式的支持,包括读取和写入Excel文件。这篇博客文章(http://blog.csdn.net/itmyhome1990/article/details/49818045)应该详细介绍了如何使用POI来创建和导出Excel...
Apache POI是一个流行的Java库,用于读取和写入Microsoft Office格式的文件,尤其是Excel(.xlsx和.xls)...理解如何使用POI库可以帮助你更好地集成Excel功能到你的Java项目中,无论是数据导出、报告生成还是数据分析。
Java中的Apache POI库是处理Microsoft Office格式文件...通过以上步骤,你应该能够使用Apache POI在Java中成功导出Excel文件。如果你遇到任何问题,可以参考提供的代码示例或者查阅POI的官方文档,以获取更详细的帮助。
在Java中,我们可以使用`DataValidationHelper`和`DataValidationConstraint`来创建验证规则,应用到特定的单元格或单元格范围。 XML解析在这个过程中起着关键作用。Java标准库中的`javax.xml.parsers....
### Java POI 大量数据导出到Excel详解 #### 一、背景介绍 在日常工作中,经常需要处理大量的数据并将其导出为Excel文件,特别是在金融、电商等行业。Java POI库作为一款强大的用于读写Microsoft Office文档的Java ...
java中使用poi导出Excel大批量数据 存在两个导出方法:存在一个分批量导出ZIP文件,一个导出exel文件
本教程将详细介绍如何使用JAVA POI库来创建一个包含图片的完整Excel导出功能。 首先,你需要在项目中引入Apache POI依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml <groupId>org.apache....
Java Poi 导出excel(支持各种设置字体、颜色、垂直居中)
在这个“POI导出Excel表格”的实例中,我们将深入探讨如何利用Apache POI进行Excel文件的导入与导出操作。 首先,我们需要在项目中集成Apache POI库。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```...
在Java开发中,我们经常使用POI库来处理Excel数据,如读取、写入和修改Excel文件。本篇文章将详细介绍如何使用JAVA POI导出Excel。 一、准备工作 在开始编写代码前,确保已经添加了Apache POI库到项目的依赖管理中...
通过以上步骤,我们可以在Java中使用Apache POI实现大数据量的Excel导出。实际开发中,可能还需要考虑如数据分页、数据过滤、多线程处理等高级功能,以进一步提高性能和用户体验。记得在使用完毕后释放资源,如关闭...
在Java开发中,当面临大批量数据导出到Excel文件时,可能会遇到内存溢出的问题。这是因为Excel文件格式本身的设计,以及Java默认处理大数据的方式,可能导致内存占用过高,尤其是在一次性加载大量数据到内存中进行...
SXSSFWorkbook在内存中只保留最近使用的100行,其余行写入磁盘,适合处理大数据量的Excel文件。 九、总结 通过Apache POI,我们可以轻松地使用Java编程语言创建和操作Excel文件,包括创建多个Sheet。这个过程涉及了...