七库下载 手游攻略 手游攻略 springboot导出表格,spring excel导入

springboot导出表格,spring excel导入

时间:2024-04-08 23:52:04 来源:头条 浏览:0

一些更流行的Java 解析和Excel 生成框架包括Apache poi 和jxl。然而,它们都存在消耗大量内存的严重问题。虽然POI有一套SAX模式的API可以在一定程度上解决内存溢出问题,但是POI仍然有07版本的Excel。由于是在内存中运行,所以内存消耗还是很高的。 easyexcel针对07版Excel重写了poi分析。即使是3M Excel 也需要大约100M 内存才能使用POI sax 进行分析。使用easyexcel,您可以将其减少到几MB,并且无论Excel有多大,您都将没有内存。 Overflow;03版本依赖于POI的Sax模式,将模型转换封装在上层,让用户使用起来更简单、更方便。在这篇文章中,我们将使用easyexcel来处理excel文件,实现以excel格式导出数据的能力。

需求背景:根据用户选择的数据,使用现有的Excel模板实现批量导出功能。例如CSDN有类似的批量数据导出功能,如果需要导出,可以根据模板文件中的字段导出。

现有模板字段:

实现方法:springboot+easyexcel 1.导入依赖org.projectlombok lombok com.alibaba easyexcel 3.0.5 2.根据Excel头创建对应的实体类PojoExcelTitile 实体类

import com.alibaba.excel.annotation.ExcelProperty;import lombok.Data;@Datapublic class ExcelTitle { @ExcelProperty(value='事件名称', index=0) private StringeventName; @ExcelProperty(value='需求负责人', Index=1) private String prdManager; @ExcelProperty(value='技术联系人',index=2) private String techManager;@ExcelProperty(value='文档链接',index=3) private String prdDocs; @ExcelProperty(value='数据链接',index=4) private String statsDocs; @ExcelProperty(value='统计口径',index=5) private String reportCalibre; 这里使用@ExcelProperty注解,其中value代表列名,index代表列名。列名,索引值。 @Data注解的主要作用是提高代码的简洁性。使用这个注解可以节省你代码中的大量get()、set()、toString() 等方法。

3、控制器类接收请求@RequestMapping(value='/bulkOutput', method=RequestMethod.GET) public ResultBeanBulkOutput(HttpServletResponse response) { //重要!设置返回格式为Excel格式response.setContentType( 'application/vnd .openxmlformats -officedocument.spreadsheetml.sheet'); //设置编码格式response.setCharacterEncoding('utf-8'); //设置URLEncoder.encode,防止中文乱码String fileName=null; try { fileName=URLEncoder . encode('数据批量导出', 'UTF-8').replaceAll('\\+', '%20'); //设置响应头response .setHeader('Content-disposition', 'attachment;filename) *=utf-8'' ' + fileName + '.xlsx'); ListBulkOutputData=wildEventService.getBulkOutputData(); //模板文件在springboot项目的resource/static中保存在Resource resource=new ClassPathResource(' static/data批量导出template.xlsx'); ExcelWriter ExcelWriter=EasyExcel.write(response.getOutputStream()) .withTemplate(resource.getInputStream()) //template.build( ); //写入模板文件的第一个sheet索引0 WriteSheet writeSheet=EasyExcel.writerSheet(0).build(); //将数据写入模板文件对应的sheet ExcelWriter.write (bulkOutputData, writeSheet); ExcelWriter.finish(); } catch (UnsupportedEncodingException e) { return ResultBean. errorService (e.getMessage()); } catch (IOException e) { return ResultBean.errorService(e.getMessage()); } return ResultBean.success('数据导出成功!'上面的代码会先处理响应并设置导出下载时的返回类型、响应头、文件名等设置。接下来,使用Resource resources=new ClassPathResource('static/databulk export template.xlsx');加载项目下的模板文件,并调用easyexcel的write方法。这里,write(response.getOutputStream())表示写入响应的输出流,即将文件返回给客户端下载。 withTemplate(resource.getInputStream()) 表示读取模板文件进行写入。最后调用WriteSheet writeSheet=EasyExcel.writerSheet(0).build();将苏剧写入模板文件的第一个sheet(索引从0开始)。

4、服务层获取要写入的数据。为了简化流程,部分数据整理如下:

导入com.example.demo.Pojo.ExcelTitle;导入org.springframework.stereotype.Service;导入java.util.ArrayList;导入java.util.List;@Servicepublic 类BulkOutputService { 公共List getOutputData() { 列表resultList=new ArrayList (); //第一行数据ExcelTitle t1=new ExcelTitle(); t1.setEventName('测试数据1'); t1.setTechManager('张三'); t1.setPrdManager('张三'); t1 . setPrdDocs('http://prdDocs.com'); t1.setStatsDocs('http://statsDocs.com'); t1.setReportCaliber('reportCaliber'); //第二行数据ExcelTitle t2=new ExcelTitle(); t2.setEventName('测试数据2'); t2.setTechManager('李四'); t2.setPrdManager('李四'); t2.setPrdDocs('http://prdDocs.com'); t2.setStatsDocs('http://statsDocs.com'); t2.setReportCaliber ( 'reportCaliber'); resultList.add(t1); resultList.add(t2); return resultList; }} 这里构造了两行简单的数据。实际场景中,您可以根据自己的数据进行替换。完成上述步骤后,您可以运行代码并检查导出效果。

查看效果当启动springboot程序,在浏览器中输入请求: http://localhost:8080/bulkOutput时,会看到返回的Excel文件被浏览器下载下来,打开后会看到如下内容。

可以看到,数据按照模板格式写入文件并导出到Excel。原定的场景已经完成。

总结一下我们这次实现的功能,我们可以利用easyexcel利用已有的模板将数据批量导出到Excel,并对Excel进行操作。最重要的功能模块是控制器内的内容。需要谨慎

为了返回带有回复请求的Excel文件,需要添加响应的响应类型和响应头,但是写入Web流时,需要确保这里的ContentType和CharacterEncoding不会变成乱码。字符可能会出现乱码或者文件可能会损坏。使用EasyExcel.withTemplate 引入模板输入流。

标题:springboot导出表格,spring excel导入
链接:https://www.7kxz.com/news/gl/20368.html
版权:文章转载自网络,如有侵权,请联系删除!
资讯推荐
更多
天地劫幽城再临归真4-5攻略:第四章归真4-5八回合图文通关教学

天地劫幽城再临归真4-5攻略:第四章归真4-5八回合图文通关教学[多图],天地劫幽城再临归真4-5怎么样八回合内通

2024-04-08
航海王热血航线艾尼路怎么玩?艾尼路加点连招攻略大全

航海王热血航线艾尼路怎么玩?艾尼路加点连招攻略大全[多图],航海王热血航线艾尼路怎么加点?艾尼路怎么连招?关

2024-04-08
坎公骑冠剑国际服怎么玩?国际服新手攻略

坎公骑冠剑国际服怎么玩?国际服新手攻略[多图],坎公骑冠剑国际服的玩法是什么样的?关于游戏中的一些新手玩法

2024-04-08
王者荣耀鸿运6+1地狱之眼怎么抽?鸿运抽奖地狱之眼概率获取攻略

王者荣耀鸿运6+1地狱之眼怎么抽?鸿运抽奖地狱之眼概率获取攻略[多图],王者荣耀鸿运抽奖活动的奖池中还有传说

2024-04-08