一、步骤

1、导入依赖

     <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>1.1.1</version></dependency>

2、创建工具

/*** @author wyy* @version 1.0* @date 2019/7/30 16:27* @description**/
public class ExcelUtil {/*** 导出 Excel :一个 sheet,带表头.** @param response  HttpServletResponse* @param list      数据 list,每个元素为一个 BaseRowModel* @param fileName  导出的文件名* @param sheetName 导入文件的 sheet 名* @param model     映射实体类,Excel 模型* @throws Exception 异常*/public static void writeExcel(HttpServletResponse response, List<? extends BaseRowModel> list,String fileName, String sheetName, BaseRowModel model) throws Exception {ExcelWriter writer =new ExcelWriter(getOutputStream(fileName, response), ExcelTypeEnum.XLSX);Sheet sheet = new Sheet(1, 0, model.getClass());sheet.setSheetName(sheetName);writer.write(list, sheet);writer.finish();}/*** 导出文件时为Writer生成OutputStream.** @param fileName 文件名* @param response response* @return ""*/private static OutputStream getOutputStream(String fileName,HttpServletResponse response) throws Exception {try {fileName = URLEncoder.encode(fileName, "UTF-8");response.setContentType("application/vnd.ms-excel");response.setCharacterEncoding("utf8");response.setHeader("Content-Disposition", "attachment; filename=" + fileName + ".xlsx");response.setHeader("Pragma", "public");response.setHeader("Cache-Control", "no-store");response.addHeader("Cache-Control", "max-age=0");return response.getOutputStream();} catch (IOException e) {throw new Exception("导出excel表格失败!", e);}}
}

3、创建表模型

/*** @author wyy* @version 1.0* @date 2019/8/6 8:47* @description   **/
@Data(记得导入 import lombok.Data;)
public class ExcelProperty extends BaseRowModel {/*** value: 表头名称* index: 列的号, 0表示第一列*//*** 供应商*/@ExcelProperty(value = "供应商", index = 1)private String supplierName;/*** 商品*/@ExcelProperty(value = "商品名", index = 1)private String productName;/*** 入库件数*/@ExcelProperty(value = "入库件数", index = 4)private Integer inNum;/*** 入库重量*/@ExcelProperty(value = "入库重量(Kg)", index = 5)private BigDecimal inWeight;/*** 入库长度*/@ExcelProperty(value = "入库长度(m)", index = 6)private BigDecimal inLength;/*** 入库面积*/@ExcelProperty(value = "入库面积(m²)", index = 7)private BigDecimal inArea;/*** 出库件数*/@ExcelProperty(value = "出库件数", index = 8)private Integer outNum;/*** 出库重量*/@ExcelProperty(value = "出库重量(Kg)", index = 9)private BigDecimal outWeight;/*** 出库长度*/@ExcelProperty(value = "出库长度(m)", index = 10)private BigDecimal outLength;/*** 出库面积*/@ExcelProperty(value = "出库面积(m²)", index = 11)private BigDecimal outArea;}

4、导入数据

 public void printSummary(Query query, HttpServletResponse response) {ExcelProperty property = new ExcelProperty();//这里持久实体和报表实体不建议用同一个 所以分开并转化List<ModelPO> list = reportDao.listallSummary(query);List<ExcelProperty> data = null;if (!CollectionUtils.isEmpty(list)) {data = list.stream().map(x -> new ExcelProperty (x.getSupplierName(), x.productName(), x.getInNum(), x.getInWeight(),x.getInLength(), x.getInArea(), x.getOutNum(), x.getOutWeight(), x.getOutLength(), x.getOutArea())).collect(Collectors.toList());}try {ExcelUtil.writeExcel(response, data, "summaryReport", "汇总表", property );} catch (Exception e) {e.printStackTrace();}}

带你领略极致简便的报表生成工具——阿里的easyExcel相关推荐

  1. 宏油庄冒菜带你领略舌尖在国外的影响

    宏油庄冒菜带你领略舌尖在国外的影响 <舌尖上的中国>第一季是在2012年8月中韩建交20周年时首次在韩国播出的.韩国媒体当时报道称,通过这部片子可以用眼睛和耳朵来享受中国的美食.此外,这部 ...

  2. 带你领略Android Jetpack组件的魅力

    1.前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发中的问题,对代码的逻辑和UI界面实现深层解耦,打造数据驱动型UI界面. A ...

  3. 风云编程python-动态排名可视化 | 带你领略编程语言20年风云变化

    原标题:动态排名可视化 | 带你领略编程语言20年风云变化 作者 | 周萝卜 来源 | 萝卜大杂烩 2019已经过去,回看编程语言20年真是风云变化! 从 TIOBE 榜(热门榜)上来看,Java.C ...

  4. python动态排名可视化_动态排名可视化 | 带你领略编程语言20年风云变化

    原标题:动态排名可视化 | 带你领略编程语言20年风云变化 作者 | 周萝卜 来源 | 萝卜大杂烩 2019已经过去,回看编程语言20年真是风云变化! 从 TIOBE 榜(热门榜)上来看,Java.C ...

  5. np合并 python_这15个tips,带你领略 Python 的简洁和优雅

    本文通过15个具体的例子,带你领略 Python 的简洁和优雅. 下文中'P'即表示'Pythonic',很 Python 的写法,'NP'也就是相反,不是很'Pythonic'的写法. 1.为多个变 ...

  6. 设计模式一网打尽,40余篇文章带你领略设计模式之美

    文章末尾附带GitHub开源下载地址. 该文章的最新版本已迁移至个人博客[比特飞],单击链接 设计模式一网打尽,40余篇文章带你领略设计模式之美 | .Net中文网 访问. 设计模式概述 20世纪80 ...

  7. Xcode自带的超好用的诊断工具

    欢迎关注我们的公众号,我们每周都会有原创文章分享.我们主要定位在移动开发领域,分享移动开发技术,包括 iOS.Android.小程序.移动前端.React Native.weex 等. 知识小集 Gi ...

  8. BATJ大数据架构师带你领略实时计算框架Flink的魅力!

    你是不是经常体验或看到以下这些场景? "小张,你看能不能做个监控大屏实时查看促销活动销售额(GMV)?" "小王,我们现在搞促销活动能不能实时统计销量 Top3 啊?&q ...

  9. 征服账号服务器,最新中文征服服务端(带架设教程+客户端补丁+需要的工具)10.13日更新...

    最新中文征服服务端(带架设教程+客户端补丁+需要的工具)10.13日更新 10月9号版本更新信息: 增加了 头像. 头像已经很完美了 天石 , 挖矿, 宝石效果 高级宝石 可以放出 动画 数据库已经改 ...

最新文章

  1. 独家 | 2019 ICCV 收录论文:基于弱监督学习的病理影像分析框架
  2. 如何防止果照外泄?自己先上传就OK!扎克伯格这波操作给网友整不会了
  3. spring_快速提示:在Spring中引用其他属性
  4. Android Message 及其使用
  5. Leetcode 106. 从中序与后序遍历序列构造二叉树 解题思路及C++实现
  6. ThreadLocal两个简单示例
  7. 【嵌入式】Libmodbus源码分析(五)-TCP相关函数分析
  8. 跟我一起考PMP---项目范围管理
  9. AT2112 Non-redundant Drive
  10. zabbix3.0 监控mysql服务器性能实现过程
  11. pytest测试框架_带你深入理解自动化测试框架Pytest的配置文件!
  12. JVisualVM初步使用
  13. STEP 7-Micro/WIN SMART 界面介绍
  14. 【物联网控制技术】--第一章--【自动控制】【反馈控制】【调节过程】【系统要求】【典型的外部输入信号】
  15. T5: Linux查看cpu信息,是否支持avx2指令集
  16. Python 写入txt文本文件
  17. 深度可分离卷积的Depth,Stack,Channel Multiplier
  18. Coggle推荐系统学习任务1:推荐系统基础
  19. 【HDU 6411】带劲的and和 【并查集 + 二进制拆位】
  20. 第一届 ACM省赛山东省 Emergency

热门文章

  1. 【CMD】bat以管理员身份运行命令
  2. 【毕业设计】基于PLC的十字路口交通灯控制系统设计【仿真+源码+论文】
  3. 米尔科技zynq利用MIO操作LED灯的linux驱动
  4. RAFT:Recurrent All-Pairs Field Transforms for Optical Flow
  5. SQL Server Management Studio中访问EXCEL 2007(XLSX)文件的方法
  6. Spring Cloud Alibaba 集成 Gateway 实现动态路由功能
  7. 核电站应急通信|核事故应急救援通信筑起安全防线!
  8. 05|面试即正义第一期:什么样的问题应该使用动态规划?
  9. 【UE5 C++基础 02】网格体API基础
  10. oracle 12c rac搭建,Oracle 12C Rac到Rac搭建ADG