`
m635674608
  • 浏览: 5031507 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

大数据量导出到Excel时需要注意的问题

    博客分类:
  • java
 
阅读更多
大数据量导出到Excel时需要注意的问题

1、现象:问题描述
我们发现当统计的数量超大时候,在统计总量明细时,导出到Excel表格的时候就会抛出如下表格的异常
(1)内存溢出异常
javax.servlet.ServletException: Servlet execution threw an exception
com.huawei.insa2.filter.EncodingFilter.doFilter(EncodingFilter.java:67)
java.lang.OutOfMemoryError

(2)超过边界值
jxl.write.biff.RowsExceededException: The maximum number of rows permitted on
a
worksheet been exceeded at
jxl.write.biff.WritableSheetImpl.getRowRecord(WritableSheetImpl.java:
779)
2、关键过程:根本原因分析
(1) 内存溢出问题,是因为一次性将大量数据载入到内存中,导致虚拟内存不足
(2) 对边界值问题,对该现象进行分析。
private void exportSMDownData(HttpServletRequest request,
HttpServletResponse response) throws IOException
{
response.setContentType("application/vnd.ms-excel");
try
{
jxl.write.WritableWorkbook workbook =
jxl.Workbook.createWorkbook(response.getOutputStream());
jxl.write.WritableSheet sheet = workbook.createSheet("发送短
信统计", 0);
…………………………..
sheet.addCell(new jxl.write.Label(0, 0, "开始时间:"));
sheet.addCell(new jxl.write.Label(1, 0, s1));
}
看下日志抛异常的地方,在向Excel表格写数据时,超过了Excel表格所允许的最大容量,导致异常发生
3、结论:解决方案及效果
(1) 对第一个问题:可以在系统的环境变量中加入虚拟内存即可。
(2) 对第二个问题
Int maxRowCount = 60000;//不能够超过Excel的最大容量
for(int i=0;i<mqb.getRowCount()/maxRowCount;i++)
{

workbook.copySheet(0,"发送短信统计"+i+1,i+1);
}
。。。。。。。。。。。
if(index> maxRowCount)
{
sheet=workbook.getSheet(++currentSheetId);
index=0;
}
一个Excel页的最大行数为65536。程序中需要加入对Excel最大容量的限制,可对每个sheet设定的显示的最大数量,当达到设定的数量时,便更换Excel的sheel写入(即使对Excel进行分页)
4、经验总结:预防措施和规范建议
该问题的出现暴露出值得关注的几点:
(1)将大量数据加载到内存中,会使虚拟内存不足,导致程序无法运行,可以通过增加
虚拟内存来解决此问题,但不推荐此方式,建议将大量数据的操作划分成小量数据
进行操作
(2) 需要注意Excel的行数限制,在导入文件的时候对大数据量导入进行分页处理。
 
http://blog.csdn.net/sea_wave2011/article/details/8282195
 
分享到:
评论

相关推荐

    C#大量数据导出到Excel自动分页导出

    C#大量数据导出到Excel,超过65536行时自动分页导出

    C# 大数据量快速导出到 Excel方法

    在C#编程中,将大数据量导出到Excel是一个常见的需求,特别是在数据分析、报表生成或者数据交换场景下。Microsoft.Office.Interop.Excel库是.NET Framework提供的一个用于与Microsoft Excel交互的COM接口,它允许...

    数据库大量数据导出Excel

    其次,在实验过程中,大数据量的导出很容易引发内存溢出,调整JVM的内存大小治标不治本。很多人建议保存为.CSV格式的文件。不过,.CSV方式导出也存在问题:首先,如果用excel来打开csv,超过65536行的数据都会看不见...

    导出大量数据到excel

    在IT行业中,将大量数据导出到Excel是常见的需求,特别是在数据分析、报表生成或数据共享时。本话题主要探讨如何高效地处理百万级别的数据导出,并利用内置的压缩功能优化存储和传输。以下是对这个主题的详细阐述: ...

    从数据库将大量数据导出到Excel文件程序总结

    这是我在公司实习的时候研究的课题,主要将大量数据从数据库导出到Excel文件。(一般是值Excel2007及以后版本)因为Excel2003及以前的版本中能保持的数据量是有限制的。Excel2007及以后版本中的数据能保持100万条...

    java poi导出大量数据到Excel

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

    delphi高效率导出数据到excel

    在这篇文章中,我们将介绍如何使用 Delphi 高效率地将数据导出到 Excel 中。 Delphi 中的 Excel 操作 在 Delphi 中,我们可以使用多种方式来操作 Excel,例如使用 OLE 自动化、ADO、DBGridEh 等。其中,使用 OLE ...

    导出Excel 支持大数据量导出

    在Java开发中,导出大数据量到Excel是一个常见的需求,特别是在数据分析、报表生成或数据交换等场景。"jxl"库是一个广泛使用的Java库,它允许开发者方便地读取和写入Excel文件。本篇文章将深入探讨如何使用jxl库实现...

    easyui+数据导出为Excel

    在IT行业中,前端数据处理和展示是至关重要的,特别是在企业级应用中,用户往往需要将大量数据导出为便于分析的格式,如Excel。本文将详细介绍如何在基于EasyUI的前端框架下实现数据导出为Excel的功能。 EasyUI是一...

    JAVA导出数据到excel中大数据量的解决方法

    web项目中需要有将数据导出excel的操作需求 使用html格式导出方法,但在导出时,根据最大行数重新建立新的excel文件; 数据从数据库取出使用纯jdbc方式读数据,边读边向文件中写; 待所有数据写完,将各个小excel...

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

    这个Java demo提供了一种实用的方法来处理Excel大数据量导出的问题,它适用于那些需要高效、稳定地处理大量数据并生成Excel报告的业务场景。通过深入理解并实践这个示例,开发者可以更好地掌握Apache POI的流式API,...

    Data From Keil to Excel (keil数据导出至excel)

    为了将这些数据导出到Excel,我们需要在KEIL中设置数据导出选项。通常,KEIL可以通过仿真器或调试器的内存查看器来查看和复制内存数据。在内存窗口中选择要导出的数据范围,然后通过复制(Ctrl+C)将数据粘贴到Excel...

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

    但即使如此,当数据量过大时,处理速度和性能仍会受到影响。 - 另外,大量数据可能导致Excel打开速度慢,影响用户体验,尤其是当数据包含复杂公式和图表时。 3. **压缩成zip文件**: - 将多个Excel文件压缩成一个...

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

    在Java开发中,当面临大批量数据导出到Excel...通过这些方法,我们可以在处理大量数据导出到Excel时避免内存溢出问题,同时保持程序的稳定性和效率。在实际应用中,可以根据具体需求和环境选择合适的方法进行组合使用。

    plsql导出数据到excel的三种方法

    1. **导出CSV**:使用PL/SQL Developer将数据导出为CSV格式,这种格式支持更多的数据量,但可能遇到中文字符乱码的问题。 2. **解决乱码问题**: - **方法1**:在Excel中打开CSV文件时,选择正确的编码格式(如...

    解决poi大数据量导出excel的代码

    解决poi大数据量导出excel的代码,该代码中所用的jar包是poi3.9。在测试过程中单个sheet中导出20万数据没有问题。

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

    在Java开发中,批量导出大数据量到Excel是一项常见的任务,尤其在数据分析、报表生成或者数据交换场景下。为了高效地处理这种情况,开发者通常需要掌握一些特定的技术和策略。本资料"Java_批量导出大数据量Excel方法...

    C#把数据导出到EXCEL强大类

    在C#编程中,将数据导出到Excel是一种常见的需求,尤其在数据分析、报表生成或者数据交换场景下。本文将详细介绍如何使用C#实现这一功能,主要涉及的知识点包括: 1. **Excel文件格式理解**:Excel文件有两种主要...

    layui数据表格导出Excel插件

    layui数据表格导出Excel插件是一款为layui框架设计的实用工具,它允许用户方便地将layui数据表格中的数据导出到Excel文件中。layui是一款轻量级的前端UI框架,以其简洁、优雅的代码风格和丰富的组件库深受开发者喜爱...

Global site tag (gtag.js) - Google Analytics