`
xuelianbobo
  • 浏览: 173677 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

java中使用poi导出Excel大批量数据到客户端

阅读更多

在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工具类

    java使用POI导出 Excel+图片工具类 ,里面含有poi jar包,只调用接口即可直接保存Excel。使用的时候需先把数据封装,具体包装需根据实际导出数据进行处理。文件demo中只提供包装格式。

    java poi导出图片到excel示例代码

    使用Java POI,可以将图片导出到Excel中,这需要使用到Drawings类和Picture类。首先,需要创建一个Drawings对象,然后使用Drawings对象的addPicture方法将图片添加到Excel中。 3. 使用Java POI下载Excel文件 在示例...

    POI导出Excel万级数据分页实现 解决内存溢出问题

    然而,当处理大量数据时,直接使用POI导出Excel可能会遇到内存溢出问题,因为POI将整个工作簿加载到内存中。本项目演示了如何通过分页方式解决这个问题,避免一次性加载过多数据导致的性能瓶颈。 首先,理解POI的...

    java poi导出Excel上传实例 可直接使用

    Apache POI是Java领域中广泛使用的库,它允许开发者创建、修改和展示Microsoft Office格式的文件,特别是Excel工作簿。本实例将详细讲解如何利用Apache POI库在Java项目中导出Excel文件。 首先,我们需要引入Apache...

    java_poi实现excel导入导出

    在本文中,我们将详细介绍如何使用 Java POI 实现 Excel 导入导出功能。 1. 什么是 Java POI Java POI 是一个开源的 Java 库,由 Apache 软件基金会维护。它提供了一系列的 API,用于处理 Microsoft Office 文件...

    java导出excel POI jar包

    本篇文章将深入讲解如何使用POI库在Java中实现Excel的导出功能,以及涉及到的相关jar包及其作用。 首先,`poi-ooxml-schemas-3.15-beta1.jar`是POI库中的XML schema定义,用于解析和创建符合Office Open XML标准的...

    java poi导出excel

    在Java中,如果你需要导出Excel文件,Java POI是一个非常实用的工具。下面将详细介绍如何使用Java POI来实现Excel的导出。 1. **引入依赖** 在Java项目中使用POI,首先需要在项目的构建文件(如Maven的pom.xml或...

    java 使用poi导出excel工具类

    java的poi的导入工具类,只需要传入两个arrayList,一个是execl的标题,一个是ececl的数据,就可以直接导出到execl里面,支持最新的execl,全新封装的,让每一个人都会使用poi导出execl!

    Java实现POI导出Excel

    在Java中,Apache POI库提供了对微软Office文档格式的支持,包括读取和写入Excel文件。这篇博客文章(http://blog.csdn.net/itmyhome1990/article/details/49818045)应该详细介绍了如何使用POI来创建和导出Excel...

    POI导出Excel文件

    Apache POI是一个流行的Java库,用于读取和写入Microsoft Office格式的文件,尤其是Excel(.xlsx和.xls)...理解如何使用POI库可以帮助你更好地集成Excel功能到你的Java项目中,无论是数据导出、报告生成还是数据分析。

    java 利用poi导出EXCEL

    Java中的Apache POI库是处理Microsoft Office格式文件...通过以上步骤,你应该能够使用Apache POI在Java中成功导出Excel文件。如果你遇到任何问题,可以参考提供的代码示例或者查阅POI的官方文档,以获取更详细的帮助。

    Java 使用poi导入excel 并使用xml做数据验证

    在Java中,我们可以使用`DataValidationHelper`和`DataValidationConstraint`来创建验证规则,应用到特定的单元格或单元格范围。 XML解析在这个过程中起着关键作用。Java标准库中的`javax.xml.parsers....

    java poi导出大量数据到Excel

    ### Java POI 大量数据导出到Excel详解 #### 一、背景介绍 在日常工作中,经常需要处理大量的数据并将其导出为Excel文件,特别是在金融、电商等行业。Java POI库作为一款强大的用于读写Microsoft Office文档的Java ...

    java poi大数据量 导出excel

    java中使用poi导出Excel大批量数据 存在两个导出方法:存在一个分批量导出ZIP文件,一个导出exel文件

    JAVA poi 做EXCEL导出(包含图片) 完整版

    本教程将详细介绍如何使用JAVA POI库来创建一个包含图片的完整Excel导出功能。 首先,你需要在项目中引入Apache POI依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;org.apache....

    Java Poi 导出excel(支持各种设置字体、颜色、垂直居中)

    Java Poi 导出excel(支持各种设置字体、颜色、垂直居中)

    POI导出Excel表格

    在这个“POI导出Excel表格”的实例中,我们将深入探讨如何利用Apache POI进行Excel文件的导入与导出操作。 首先,我们需要在项目中集成Apache POI库。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```...

    JAVA POI导出EXCEL代码

    在Java开发中,我们经常使用POI库来处理Excel数据,如读取、写入和修改Excel文件。本篇文章将详细介绍如何使用JAVA POI导出Excel。 一、准备工作 在开始编写代码前,确保已经添加了Apache POI库到项目的依赖管理中...

    使用poi方式导出excel(分多个sheet导出)

    SXSSFWorkbook在内存中只保留最近使用的100行,其余行写入磁盘,适合处理大数据量的Excel文件。 九、总结 通过Apache POI,我们可以轻松地使用Java编程语言创建和操作Excel文件,包括创建多个Sheet。这个过程涉及了...

Global site tag (gtag.js) - Google Analytics