`
Dead_knight
  • 浏览: 1202291 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
博客专栏
752c8642-b795-3fe6-946e-a4e845bffdec
Spring Securi...
浏览量:240617
33caa84e-18a6-3036-a82b-6e2106a4de63
clojure专题
浏览量:49056
E17ca077-44df-3816-a3fe-471c43f6e1e5
WebLogic11g
浏览量:237060
社区版块
存档分类
最新评论

java操作Excel导出大数据量解决方案

阅读更多
    看过很多关于Excel导出时出现内存溢出的情况,也有很多解决方案。现提供如下解决方案,如有不妥,请指正:
    该项目使用B/S架构,由于POI、JXL在导出excel大数据量情况下会产生大量对象最终导致内存溢出。其实Excel可以另存为html文件,保存为html后的文件内容如下:
<html xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=gb2312">
<meta name=ProgId content=Excel.Sheet>
<meta name=Generator content="Microsoft Excel 11">
……样式信息……
<body link=blue vlink=purple>
<table x:str border=0 cellpadding=0 cellspacing=0 width=620 style='border-collapse:
 collapse;table-layout:fixed;width:466pt'>
 <col width=129 style='mso-width-source:userset;mso-width-alt:4128;width:97pt'>
 <col class=xl25 width=72 span=2 style='width:54pt'>
 <col class=xl25 width=63 style='mso-width-source:userset;mso-width-alt:2016;
 width:47pt'>
 <col class=xl25 width=118 style='mso-width-source:userset;mso-width-alt:3776;
 width:89pt'>
 <col width=166 style='mso-width-source:userset;mso-width-alt:5312;width:125pt'>
 <tr height=19 style='height:14.25pt'>
  <td height=19 class=xl24 width=129 style='height:14.25pt;width:97pt'>字段1</td>
  <td class=xl24 width=72 style='width:54pt'>字段2</td>
  <td class=xl24 width=72 style='width:54pt'>字段3</td>
  <td class=xl24 width=63 style='width:47pt'>字段4</td>
  <td class=xl24 width=118 style='width:89pt'>字段5</td>
  <td width=166 style='width:125pt'></td>
 </tr>
……数据……
 <![if supportMisalignedColumns]>
 <tr height=0 style='display:none'>
  <td width=129 style='width:97pt'></td>
  <td width=72 style='width:54pt'></td>
  <td width=72 style='width:54pt'></td>
  <td width=63 style='width:47pt'></td>
  <td width=118 style='width:89pt'></td>
  <td width=166 style='width:125pt'></td>
 </tr>
 <![endif]>
</table>
</body>
</html>

    至此,可通过数据生成如上格式的HTML文本信息则避开大量对象的建立,如果将该HTML直接以application/excel返回浏览器时则Excel文件会比普通大一点,可以通过配置过滤器对该HTML进行压缩即可,如下:
	
response.reset(); 
response.setContentType("application/zip;charset=GBK");
String s = "查询-" + new java.sql.Date(System.currentTimeMillis()).toString().replaceAll("-","") + ".xls";
String filename = s + ".zip";
response.addHeader("Content-Disposition", "inline;filename=" + filename);

    以上只是一种导出Excel大数据量的解决方案。请大家给予意见!谢谢!
分享到:
评论
4 楼 fffddd 2009-07-25  
你这种方式内存小了的话导不了大数据量的。
3 楼 haiweb 2009-07-22  
此种方法会丢失数据,当数据量超过3000后就丢失数据
2 楼 Dead_knight 2009-07-12  
fcm915 写道
这样的话 我再想导入这个Excel 还可行吗?

当然可行
1 楼 fcm915 2009-07-11  
这样的话 我再想导入这个Excel 还可行吗?

相关推荐

    Java_批量导出大数据量Excel方法.zip

    在Java开发中,批量导出大数据量到...通过以上方法,开发者可以构建一个高效且健壮的Java批量导出大数据量到Excel的解决方案。具体实现细节可能在提供的excelproj和ExpXLS文件中有所体现,建议解压后仔细研究源代码。

    java解决大批量数据导出Excel产生内存溢出的方案

    - 使用如JExcelApi、OpenCSV等其他第三方库,它们可能提供了更优化的数据导出方案,尤其是针对大数据量。 7. **优化Excel文件格式**: - 如果可能,可以考虑使用CSV格式代替Excel,因为CSV文件对内存的需求较低,...

    java excel大数据量导出demo,可支持模板导出

    这个"java excel大数据量导出demo"提供了一个高效、灵活的解决方案,它支持模板导出,分页查询,以及处理大数据量的能力。在这个项目中,开发者采用了Apache POI库的SXSSFWorkbook子类,这是一个专门为处理大量数据...

    java多线程导出excel(千万级别)优化

    Java多线程导出Excel是处理大数据量时的一种高效策略,尤其在面对千万级别的数据时。传统的Apache POI库在处理大规模数据时可能会遇到栈溢出(StackOverflowError)和内存溢出(OutOfMemoryError)等问题,因为这些...

    java导出30万数据量的excel(采用生成多个excel,最后打包zip)

    在Java开发中,处理大数据量的Excel导出是一项常见的任务,尤其当数据量达到数十万条时,单个Excel文件可能会遇到性能瓶颈或格式限制。本项目针对这一问题提出了一种解决方案,即分块生成多个Excel文件,然后将它们...

    Java实现Excel导入导出操作详解.pptx.pptx

    另外,EasyExcel是一个高效且强大的库,采用流式读写模式,特别适合处理大数据量的Excel文件。 使用Apache POI进行Excel导入操作,首先要加载Excel文件,然后遍历并读取所需数据。例如,可以创建` FileInputStream ...

    多个excel导出压缩成zip 文件 数据量大导出

    "多个Excel导出压缩成zip文件"的场景通常是为了解决数据量过大导致的文件管理不便、传输效率低以及存储空间占用过多等问题。下面我们将深入探讨这个话题,主要涵盖以下几个方面: 1. **大数据量导出**: - 当数据...

    java实现csv导出千万级数据实例

    本实例聚焦于“java实现csv导出千万级数据实例”,旨在提供一个高效、稳定的解决方案,避免因数据量过大而导致的性能问题,如Java中的栈溢出(Stack Overflow)。CSV(Comma Separated Values)格式因其简单、通用性...

    Java、Excel导出

    6. **大数据量导出** 当处理大量数据时,一次性导出可能会导致内存溢出。为解决此问题,可以采用分片导出,将数据分成多个文件或工作表。使用`HSSFWorkbook.write()`方法时,可以边导出边写入输出流,例如`...

    Java 导出Excel.zip

    "Java 导出Excel.zip"这个压缩包文件提供了一个Java实现的解决方案,允许开发者以全泛型的方式方便地导出数据到Excel文件,而且支持动态创建不同数量的sheet页面,增强了灵活性。 1. **Java与Excel交互**:Java中...

    在excel的一个sheet中导出大批量数据>20万

    标题中的“在excel的一个sheet中导出大批量数据&gt;20万”指的是处理Excel电子表格时,涉及到大量数据(超过20万个单元格)的导出操作。在Excel中,通常20万条数据可能超过了单个工作表的推荐限制,这可能会导致性能...

    java web开发中大量数据导出Excel超时(504)问题解决

    在Java Web开发中,当需要将大量数据导出到Excel文件时,可能会遇到超时(如504错误)的问题。这种问题通常是由于服务器处理时间过长,超过了Web服务器或应用服务器设置的超时限制。以下是一些解决此类问题的方法和...

    Java使用POI导出大数据量Excel的方法

    总结来说,Java使用POI的SXSSFWorkbook类可以有效地处理大数据量Excel导出,通过硬盘缓存减少内存使用。理解其工作原理并适当优化,能够在保持性能的同时,避免系统资源的过度消耗。在开发过程中,遇到此类问题时,...

    使用POI导出大数据量到EXCEL

    通过以上步骤,我们可以在Java中使用Apache POI实现大数据量的Excel导出。实际开发中,可能还需要考虑如数据分页、数据过滤、多线程处理等高级功能,以进一步提高性能和用户体验。记得在使用完毕后释放资源,如关闭...

    easyExcel实现大数据导出

    `easyExcel`是专门为处理大量数据设计的一个轻量级工具,它能够有效地解决内存溢出问题,特别适合大数据量的Excel读写操作。下面将详细阐述`easyExcel`的核心功能、使用方法以及如何实现大数据导出。 `easyExcel`的...

    Java操作Excel解决方案.docx

    ### Java操作Excel解决方案 #### 一、概述 在日常开发工作中,经常需要处理Excel文件,尤其是在企业级应用中。为了方便地实现Excel的导入导出功能,本文将介绍如何使用Apache POI库来操作Excel文件。Apache POI是...

    关于表单的导出EXCEL设计,有时需要选择性的导出表单上的某些数据的解决方案

    本篇将深入探讨如何实现选择性地导出表单上的特定数据到Excel的解决方案。 首先,我们需要理解表单的基本结构。表单(Form)是HTML中的一个重要元素,用于收集用户输入的信息。它由各种表单控件组成,如文本输入框...

    java 导入导出excel

    ### Java导入导出Excel知识点详解 #### 一、Jxl库概述 Jxl是一个用于Java应用程序处理Microsoft Excel文件的强大库...然而,在处理复杂或大规模数据时,可能需要评估其性能表现,并考虑是否有其他更适合的解决方案。

    java 大数据导出csv小工具

    标题中的“java 大数据导出csv小工具”指的是一个基于Java编程语言开发的应用程序,其主要功能是将大量数据转换并导出为CSV(逗号分隔值)格式的文件。CSV是一种通用的文件格式,广泛用于数据交换,因为它可以被...

Global site tag (gtag.js) - Google Analytics