为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

java大数据量导出csv文件并压缩

2023-06-21 5页 doc 36KB 22阅读

用户头像 个人认证

is_856463

暂无简介

举报
java大数据量导出csv文件并压缩     java大数据量导出csv文件并压缩                  java大数据量导出csv文件并压缩java使用POI大数据量导出excel一般会存在以下几个问题:一次从数据库查询出这么大数据,查询缓慢查询数据量过大时会内存溢出解决方案:分页查询数据,比如一次查询5w数据,生成多个excel文件大数据量生成excel文件过慢解决方案:生成excel改为生成csv文件本文主要介绍java导出csv文件csv文件导出工具类packagecom.yss.datamiddle.util;importjavax.ser...
java大数据量导出csv文件并压缩
     java大数据量导出csv文件并压缩                  java大数据量导出csv文件并压缩java使用POI大数据量导出excel一般会存在以下几个问题:一次从数据库查询出这么大数据,查询缓慢查询数据量过大时会内存溢出解决方案:分页查询数据,比如一次查询5w数据,生成多个excel文件大数据量生成excel文件过慢解决方案:生成excel改为生成csv文件本文主要介绍java导出csv文件csv文件导出工具类packagecom.yss.datamiddle.util;importjavax.servlet.ServletOutputStream;importjavax.servlet.http.HttpServletResponse;importjava.io.*;importjava.lang.reflect.Field;importjava.util.List;importjava.util.Map;importjava.util.zip.ZipEntry;importjava.util.zip.ZipOutputStream;/***@description:*@author:Hld*@create:2021/11/1617:11*@update:2021/11/1617:11*/publicclassCsvUtils{/***导出csv文件*@paramtitles导出文件列头*@paramlist具体导出数据*@paramfileName文件名称*@paramresponse*@throwsIOException*@throwsIllegalArgumentException*@throwsIllegalAccessException*/publicstaticvoidexportCsv(Listtitles,List>list,StringfileName,HttpServletResponseresponse)throwsIOException,IllegalArgumentException,IllegalAccessException{StringBufferexpStr=newStringBuffer();OutputStreamo=null;try{//csv文件是逗号分隔,除第一个外,每次写入一个单元格数据后需要输入逗号for(Stringtitle:titles){expStr.append(title).append(",");}//写完文件头后换行expStr.append("\n");//写内容for(Mapmap:list){for(Stringkey:map.keySet()){Stringval=map.get(key)!=null?map.get(key).toString():"";expStr.append(val).append(",");}//写完一行换行expStr.append("\n");}response.setContentType("application/download;charset=UTF-8");response.setContentType("Content-type:application/vnd.ms-excel;charset=UTF-8");response.setHeader("Content-disposition","attachment;filename="+java.net.URLEncoder.encode(fileName,"UTF-8"));o=response.getOutputStream();o.write(expStr.toString().getBytes("GBK"));}catch(Exceptione){e.printStackTrace();}finally{//关闭if(o!=null){o.close();}}}/***导出csv压缩文件*@paramtitles导出文件列头*@paramlist具体导出数据*@paramfileName压缩文件名称例:aa.zip*@paramresponse*@throwsIOException*@throwsIllegalArgumentException*@throwsIllegalAccessException*/publicstaticStringexportCsvZip(Listtitles,List>list,StringfileName,HttpServletResponseresponse)throwsIOException,IllegalArgumentException,IllegalAccessException{StringBufferexpStr=newStringBuffer();ZipOutputStreamzos=null;OutputStreamo=null;try{//csv文件是逗号分隔,除第一个外,每次写入一个单元格数据后需要输入逗号for(Stringtitle:titles){expStr.append(title).append(",");}//写完文件头后换行expStr.append("\n");//写内容for(Mapmap:list){for(Stringkey:map.keySet()){Stringval=map.get(key)!=null?map.get(key).toString():"";expStr.append(val).append(",");}//写完一行换行expStr.append("\n");}response.setContentType("application/download;charset=UTF-8");response.setContentType("Content-type:application/vnd.ms-excel;charset=UTF-8");response.setHeader("Content-disposition","attachment;filename="+java.net.URLEncoder.encode(fileName,"UTF-8"));o=response.getOutputStream();zos=newZipOutputStream(newBufferedOutputStream(o));zos.putNextEntry(newZipEntry(fileName.replace("zip","csv")));//创建压缩文件内的文件zos.write(expStr.toString().getBytes("GBK"));zos.closeEntry();}catch(Exceptione){e.printStackTrace();}finally{if(zos!=null){zos.close();}if(o!=null){o.close();}}return"0";}}调用示例@ApiOperation(value="导出csv文件")@PostMapping("/v1/exportCsv")publicvoidexportCsv(HttpServletResponseresponse)throwsIOException,IllegalAccessException{//模拟获取测试数据List>datas=getDatas();//导出文件列头Listtitles=Arrays.asList("第一列title","第二列title","第三列title","第四列title","第五列title");//导出csv文件CsvUtils.exportCsv(titles,datas,"test.csv",response);//导出csv压缩文件CsvUtils.exportCsvZip(titles,datas,"test.zip",response);}publicList>getDatas(){List>datas=newArrayList<>();for(inti=0;i<10000;i++){Mapmap=newHashMap<>();map.put("a1","a1"+i);map.put("b2","b2"+i);map.put("c3","c3"+i);map.put("d4","d4"+i);map.put("e5","e5"+i);datas.add(map);}returndatas;}亲测导出40w数据到csv耗时3s左右 -全文完-
/
本文档为【java大数据量导出csv文件并压缩】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索