`
hepeng1688
  • 浏览: 93901 次
  • 来自: ...
社区版块
存档分类
最新评论

java 导出excel并且针对海量数据进行处理

    博客分类:
  • java
阅读更多
out.clearBuffer();

rs = stmt.executeQuery("select * from BATCH_POINTADJUST_DETAIL );
//获取服务器绝对路径
String path = request.getSession().getServletContext().getRealPath("")+ java.io.File.separator + "WEB-INF/download/batch_pointadjust_detail.xls";
File file = new File(path); //创建一个.xls文件
System.out.println("path is =========" + path);
File folder = new File(path.substring(0,path.lastIndexOf("/")));
//判断文件夹和文件是否存在,如果不存在就创建
if(!folder.exists()){
file.mkdirs();
}
if(file.exists()){
file.delete();
file.createNewFile();
}else{
file.createNewFile();
}

BufferedInputStream fis = null;
try{
WritableWorkbook wwb = Workbook.createWorkbook(new FileOutputStream(file));
WritableSheet ws = wwb.createSheet("积分批量调整成功记录明细", 0); //创建一个sheet
//创建表头
Label labelC = new jxl.write.Label(0, 0, "流水ID");
ws.addCell(labelC);
labelC = new jxl.write.Label(1, 0, "流水批次号");
ws.addCell(labelC);
labelC = new jxl.write.Label(2, 0, "客户号");
ws.addCell(labelC);

int i = 1;//行
boolean flg = false;
int t = 0;//工作表个数
if(rs != null){
while(rs.next()){
//excel工作表最大记录数为65536,当超出此范围时需要重新创建新的工作表(sheet)
if(i%60000 == 0){
t ++ ;
flg = true;
ws = wwb.createSheet("积分批量调整成功记录明细" + t, 0); //创建新的sheet
//创建表头
labelC = new jxl.write.Label(0, 0, "流水ID");
ws.addCell(labelC);
labelC = new jxl.write.Label(1, 0, "流水批次号");
ws.addCell(labelC);
labelC = new jxl.write.Label(2, 0, "客户号");
ws.addCell(labelC);
}
//将记录集中的数据填充至excel文件中
for(int j = 0;j < rs.getMetaData().getColumnCount();j ++ ){
if(flg){ //将excel中的行数归零
labelC = new Label(j,i + 1 - t * 60000,rs.getString(j + 1));
}else{
labelC = new Label(j,i,rs.getString(j + 1));
}
ws.addCell(labelC);
}
i ++ ;
}
}
data.close();
//写入Excel工作表
wwb.write();
//关闭Excel工作薄对象
wwb.close();

//提供下载文件
int byteRead;
fis = new BufferedInputStream(new FileInputStream(file));
response.setContentType("application/octet-stream; charset=iso-8859-1");
response.setHeader("Content-disposition","attachment; filename=\"" + file.getName() + "\"");
while ((byteRead = fis.read()) != -1) {
out.write(byteRead);
}
out.flush();


分享到:
评论
1 楼 juluren 2013-02-04  

相关推荐

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

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

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

    CSV(Comma Separated Values)格式因其简单、通用性而广泛用于数据交换,但在处理海量数据时,传统的导出方法可能面临效率和内存管理的难题。 在Java中,Apache POI库通常用于操作Microsoft Office文档,包括Excel...

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

    在Java Web开发中,当需要将大量数据导出到...总之,解决Java Web开发中大量数据导出Excel超时问题,关键在于优化数据处理和传输方式,同时关注服务器配置和资源管理。通过上述策略,可以显著提高性能并降低超时风险。

    POI百万级大数据量EXCEL导出 - 请叫我猿叔叔的博客 - CSDN博客.htm

    POI百万级大数据量EXCEL导出 - 请叫我猿叔叔的博客 - CSDN博客.htm

    批量导出CVS-千万级数据处理

    在IT行业中,大数据处理是一项关键任务,特别是在需要将大量数据导出为可读格式时。本文将深入探讨如何使用POI和JXL框架批量导出CSV文件,处理千万级的数据,同时避免内存溢出的问题。 首先,让我们了解CSV(Comma ...

    java向excel 写入海量数据内存溢出问题的解决.pdf

    在Java中,向Excel写入海量数据时可能会遇到内存溢出的问题,特别是在使用Apache POI库处理Excel文件时。这是因为POI默认会将整个工作簿加载到内存中,当数据量巨大时,内存消耗非常快,导致Java虚拟机(JVM)内存...

    CSV大数据分批并压缩导出

    总的来说,CSV大数据分批并压缩导出是一种实用且高效的解决方案,特别适用于需要处理海量数据且内存资源有限的环境。它结合了分批处理的内存管理策略和压缩技术的空间优化,确保了大数据操作的可行性和性能。

    POI海量导出EXCEL所需jar包和db文件

    本资源提供了使用POI处理海量数据导出到Excel所需的jar包和数据库文件,这对于大数据处理和报告生成场景非常有用。 POI库的核心功能包括: 1. **读取Excel文件**:POI提供了HSSF(Horizontally SpreadSheet Format...

    easyExcel实现大数据导出

    总结来说,`easyExcel`是Java开发中处理大数据Excel读写的好帮手,它的内存优化策略和简洁的API使得即使面对海量数据,也能轻松应对。结合适当的处理策略,如分批写入,可以进一步提高系统的稳定性和性能。

    Java实现excel大数据量导入

    Java实现Excel大数据量导入是一项常见的任务,特别是在处理企业级数据导入导出时。Apache POI 是Java中广泛使用的库,用于处理Microsoft Office格式的文件,包括Excel。然而,当涉及大量数据时,直接使用POI的用户...

    报表技术POI导入导出复杂样式Excel和百万数据(Java代码).zip

    本文将深入探讨使用Apache POI库在Java环境中处理Excel文件,特别是涉及复杂样式和处理海量数据的场景。 Apache POI是Apache软件基金会的一个开源项目,主要为Microsoft Office格式提供读写支持,包括Excel、Word和...

    csv导出大量数据

    在导出大量敏感数据时,要确保遵循数据保护法规,可能需要对数据进行匿名化或脱敏处理。 9. CSV文件的导入与分析 导入CSV数据到数据分析工具(如Excel、Tableau、Power BI或编程环境)时,需注意设置正确的分隔符、...

    通过EasyExcel+线程池实现百万级数据从Excel导入到数据库

    在处理大量数据导入数据库的场景中,使用阿里巴巴开源的EasyExcel库结合线程池技术可以有效地实现从Excel文件导入到数据库的过程。先定义sheet的数量和固定大小的线程池数量,每个sheet页做为单独的任务交给线程池...

    数据处理代码_Python数据处理_源码

    5. **数据聚合**:使用`groupby`和`agg`函数对数据进行分组和聚合操作,提取有价值的信息。 6. **数据可视化**:Python的Matplotlib和Seaborn库可以帮助我们直观地展示数据,辅助理解数据分布和关系。 7. **数据...

    批量处理数据

    批量处理数据是指一次性对大量数据进行操作,而不是逐个处理单个记录。这种处理方式通常适用于数据量大到无法逐一处理的情况,例如日志分析、批量导入导出、批量更新或清理数据库等。批量处理可以显著提高处理效率,...

    excelUtil.rar

    java批量处理Excel上传解析后台工具类代码及相关jar包,支持传统mvc框架及时下流行的springBoot、springCloud,亲测亲写可以放心使用。 支持2013和2017版的Excel文件上传...(海量处理)支持Excel文件行列自定义处理。

    ExcelKit:Excel导入导出工具(简单、好用且轻量级的海量Excel文件导入导出解决方案.)ISSUESPR请前往:https

    简单、好用且轻量级的海量Excel文件导入导出解决方案。 注意 停止维护,建议使用EasyExcel: POM.xml &lt;groupId&gt;com.wuwenze&lt;/groupId&gt; &lt;artifactId&gt;ExcelKit &lt;version&gt;2.0.72 示例 1. ExcelMapping (配置Excel...

    easyexcel4j:基于Apache POI的海量数据导入和简单导出的Excel工具

    easyexcel4j基于Apache POI的海量数据导入和简单导出的Excel工具快速使用1. 导入使用需要添加maven依赖&lt;!-- https://mvnrepository.com/artifact/com.github.ldzzdl/easyexcel4j --&gt;&lt;dependency&gt; &lt;groupId&gt;...

    POI海量数据大数据文件生成SXSSFWorkbook使用简介.pdf

    总之,`SXSSFWorkbook` 是 Apache POI 针对大数据导出 Excel 文件场景的一种优化解决方案,通过将部分数据存储到磁盘,降低了内存压力,但可能会牺牲一定的性能。在实际应用中,需要根据项目需求权衡内存效率和执行...

Global site tag (gtag.js) - Google Analytics