文章目录

  • easyexcel导出
    • 一、依赖
    • 二、导出
      • 普通导出
      • 自定义表头导出
      • 多sheet导出

easyexcel导出

一、依赖

        <!--阿里巴巴EasyExcel依赖--><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.10</version></dependency>

参考文档:语雀easyexcel文档

二、导出

普通导出

/*** 导出** @param response 响应流* @param fileName 文件名称* @param list     数据* @param clazz    class文件*/public static void exportExcel(HttpServletResponse response, String fileName, String sheetName, List<?> list, Class<?> clazz) {if (CollectionUtils.isEmpty(list)) {throw new RuntimeException();}if (StringUtils.isEmpty(fileName)) {fileName = new Date().toString();}try {response.setContentType("application/vnd.ms-excel");response.setCharacterEncoding("utf-8");// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系try {fileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20");} catch (UnsupportedEncodingException e) {e.printStackTrace();}response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");EasyExcel.write(response.getOutputStream(), clazz)// 导出文件名.autoCloseStream(Boolean.TRUE).sheet(sheetName).doWrite(list);} catch (Exception e) {e.printStackTrace();}}

实体类

@HeadRowHeight
@HeadStyle(horizontalAlignment = CENTER)
public class ExportAssetModel {@ColumnWidth(30)@HeadStyle(fillForegroundColor = 40)@ContentStyle(wrapped = true)@ExcelProperty({"基础属性", "制造商\n(可输入数字0-9字母a-zA-Z,下划线_-以及汉字,最大长字符64位)\n(必填)"})private String manufacturer;@ColumnWidth(30)@HeadStyle(fillForegroundColor = 40)@ContentStyle(wrapped = true)@ExcelProperty({"基础属性", "型号\n(请输入1-64个字符,可输入中文,数字0-9,字母a-zA-Z,空格,以及字符+._-()()[]:,/)\n(必填)"})private String model;@ColumnWidth(30)@HeadStyle(fillForegroundColor = 40)@ContentStyle(wrapped = true)@ExcelProperty({"基础属性", "设备类型\n(请输入1-64个字符,只能输入中文,英文,数字,空格和特殊字符#@_.*-/[]()~′^{}|:;、,‘’)\n(必填)"})private String deviceTypeStr;@ColumnWidth(30)@HeadStyle(fillForegroundColor = 40)@ContentStyle(wrapped = true)@ExcelProperty({"基础属性", "状态\n(只能输入使用中、未使用)"})private String status;@ColumnWidth(30)@HeadStyle(fillForegroundColor = 40)@ContentStyle(wrapped = true)@ExcelProperty({"基础属性", "备注\n(请输入1-64个字符,只能输入中文,英文,数字,空格和特殊字符#@_.*-/[]()~′^{}|:;、,‘’)"})private String remark;@ColumnWidth(30)@HeadStyle(fillForegroundColor = 53)@ContentStyle(wrapped = true)@ExcelProperty({"扩展属性", "高度(U)\n(请输入1-100之间的整数)\n(IT设备、通信设备必填)"})private String height;@ColumnWidth(30)@HeadStyle(fillForegroundColor = 53)@ContentStyle(wrapped = true)@ExcelProperty({"扩展属性", "重量(Kg)\n(请输入0-9999.99之间的数)"})private String weight;@ColumnWidth(30)@HeadStyle(fillForegroundColor = 53)@ContentStyle(wrapped = true)@ExcelProperty({"扩展属性", "额定功率(W)\n(请输入0-9999999.99之间的数)\n(IT设备、通信设备必填)"})private String ratedPower;@ColumnWidth(30)@HeadStyle(fillForegroundColor = 53)@ContentStyle(wrapped = true)@ExcelProperty({"扩展属性", "配电端口数\n(请输入0-2048之间的整数)"})private String distributionPort;@ColumnWidth(30)@HeadStyle(fillForegroundColor = 53)@ContentStyle(wrapped = true)@ExcelProperty({"扩展属性", "网络端口数\n(请输入0-2048之间的整数)"})private String networkPort;
}

导出效果

自定义表头导出

/*** 自定义表头导出** @param response* @param fileName* @param sheetName* @param list* @param head*/public static void customHeadExportExcel(HttpServletResponse response, String fileName, String sheetName, List<List<Object>> list, List<List<String>> head) {if (CollectionUtils.isEmpty(list)) {throw new RuntimeException();}if (CollectionUtils.isEmpty(head)) {throw new RuntimeException();}if (StringUtils.isEmpty(fileName)) {fileName = new Date().toString();}try {response.setContentType("application/vnd.ms-excel");response.setCharacterEncoding("utf-8");// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系try {fileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20");} catch (UnsupportedEncodingException e) {e.printStackTrace();}response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");EasyExcel.write(response.getOutputStream()).head(head)//默认策略
//                    .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).registerWriteHandler(myHorizontalCellStyleStrategy()).registerWriteHandler(new SimpleColumnWidthStyleStrategy(25))//简单的列宽策略,列宽20
//                    .registerWriteHandler(new SimpleRowHeightStyleStrategy((short)25,(short)25))//简单的行高策略// 导出文件名.autoCloseStream(Boolean.TRUE).sheet(sheetName).doWrite(list);} catch (Exception e) {e.printStackTrace();}}private static HorizontalCellStyleStrategy myHorizontalCellStyleStrategy() {//1 表头样式策略WriteCellStyle headWriteCellStyle = new WriteCellStyle();//设置表头居中对齐headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);//表头前景设置淡蓝色headWriteCellStyle.setFillForegroundColor(IndexedColors.PALE_BLUE.getIndex());WriteFont headWriteFont = new WriteFont();headWriteFont.setBold(true);headWriteFont.setFontName("宋体");headWriteFont.setFontHeightInPoints((short) 12);headWriteCellStyle.setWriteFont(headWriteFont);//内容样式  多个样式则隔行换色List<WriteCellStyle> listCntWritCellSty = new ArrayList<>();//2 内容样式策略  样式一WriteCellStyle contentWriteCellStyle = new WriteCellStyle();WriteFont contentWriteFont = new WriteFont();//内容字体大小contentWriteFont.setFontName("宋体");contentWriteFont.setFontHeightInPoints((short) 11);contentWriteCellStyle.setWriteFont(contentWriteFont);//设置自动换行contentWriteCellStyle.setWrapped(true);//设置垂直居中contentWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);// 头默认了 FillPatternType所以可以不指定。contentWriteCellStyle.setFillPatternType(FillPatternType.SOLID_FOREGROUND);//设置背景黄色contentWriteCellStyle.setFillForegroundColor(IndexedColors.YELLOW.getIndex());//设置水平靠左contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.LEFT);//设置边框样式setBorderStyle(contentWriteCellStyle);//内容风格可以定义多个。listCntWritCellSty.add(contentWriteCellStyle);//2 内容样式策略  样式二WriteCellStyle contentWriteCellStyle2 = new WriteCellStyle();// 这里需要指定 FillPatternType 为FillPatternType.SOLID_FOREGROUND 不然无法显示背景颜色。// 头默认了 FillPatternType所以可以不指定。contentWriteCellStyle2.setFillPatternType(FillPatternType.SOLID_FOREGROUND);// 背景绿色contentWriteCellStyle2.setFillForegroundColor(IndexedColors.GREEN.getIndex());//设置垂直居中contentWriteCellStyle2.setVerticalAlignment(VerticalAlignment.CENTER);contentWriteCellStyle2.setHorizontalAlignment(HorizontalAlignment.LEFT);//设置边框样式setBorderStyle(contentWriteCellStyle2);listCntWritCellSty.add(contentWriteCellStyle2);// 水平单元格风格综合策略(表头 + 内容)// return  new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);return new HorizontalCellStyleStrategy(headWriteCellStyle, listCntWritCellSty);}/*** 设置边框样式** @param contentWriteCellStyle*/private static void setBorderStyle(WriteCellStyle contentWriteCellStyle) {//设置边框样式contentWriteCellStyle.setBorderLeft(BorderStyle.THIN);// contentWriteCellStyle.setBottomBorderColor(IndexedColors.BLUE.getIndex()); //颜色contentWriteCellStyle.setBorderTop(BorderStyle.THIN);contentWriteCellStyle.setBorderRight(BorderStyle.THIN);contentWriteCellStyle.setBorderBottom(BorderStyle.THIN);}

多sheet导出

public static void exportMoreExcel(HttpServletResponse response, String fileName,String sheetNameOne,String sheetNameTwo,String sheetNameThree,List<List<Object>> list, List<List<String>> head,List<?> listTwo,Class<?> clazzTwo, List<?> listThree,Class<?> clazzThree) {if (CollectionUtils.isEmpty(list)) {throw new RuntimeException();}if (CollectionUtils.isEmpty(head)) {throw new RuntimeException();}if (StringUtils.isEmpty(fileName)) {fileName = new Date().toString();}try {response.setContentType("application/vnd.ms-excel");response.setCharacterEncoding("utf-8");// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系try {fileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20");} catch (UnsupportedEncodingException e) {e.printStackTrace();}response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).build();WriteSheet writeSheet = EasyExcel.writerSheet(1, sheetNameOne).head(head).registerWriteHandler(myHorizontalCellStyleStrategy()).registerWriteHandler(new SimpleColumnWidthStyleStrategy(25))//简单的列宽策略,列宽20.build();excelWriter.write(list, writeSheet);writeSheet = EasyExcel.writerSheet(2, sheetNameTwo).head(clazzTwo).build();excelWriter.write(listTwo, writeSheet);writeSheet = EasyExcel.writerSheet(3, sheetNameThree).head(clazzThree).build();excelWriter.write(listThree, writeSheet);// 千万别忘记finish 会帮忙关闭流excelWriter.finish();} catch (Exception e) {e.printStackTrace();}}

easyexcel导出相关推荐

  1. easyExcel导出表格及合并单元格

    easyExcel导出表格及合并单元格 前言 废话不多说,直接上效果图. 效果图 合并之前导出的: 合并之后导出的: 代码的实现主要是合并之后的,为了更好的分清数据之间的关系. 二.代码 目录 < ...

  2. R先生一步步教你用EasyExcel导出包含多图片的Excel

    R先生一步步教你用EasyExcel导出包含多图片的Excel 光与光之间的黑暗,路人永不得知 书接上文说到,R先生之前有写过一篇用EasyExel导出包含图片的Excel文件,由于在官方文档并没有找 ...

  3. EasyExcel导出自定义合并单元格文件

    目标 需要使用阿里的EasyExcel库来导出excel,并要自定义合并单元格. 思路 这里自定义的CellWriteHandler需要将数据进行如下处理: 1.Excel每一行数据必须对应一个对象: ...

  4. easy-excel导出excel中日期列需要双击才能进行筛选

    使用easy-excel导出的excel中,给日期那一例设置单元格格式,发现需要双击后才能生效,翻了一些资料说easy-excel程序导出的日期值是文本值,所以需要双击让excel转化一下,这边查了e ...

  5. Springboot中EasyExcel导出及校验后导入前后台功能实现

    EasyExcel导出及校验后导入前后台功能实现 一.引入maven依赖 1. 在pom.xml中引入maven依赖 二.实体类及工具类 1. 导入时的自定义校验注解 2. 格式校验工具类 3. Ex ...

  6. easyExcel导出某列是固定下拉选框的excel模板

    easyexcel导出固定下拉选框的模板,项目中遇到的,记录一下. 1.示例 如图,第四列的值是下拉选框,是服务器端根据真实数据动态生成的. 2.实现方案 2.1 依赖 <dependency& ...

  7. swagger easyExcel导出Excel文件打不开,文件损坏

    alibaba/easyexcel文件导出 swagger easyExcel导出Excel文件打不开,文件损坏 文件下载打不开,将文件输出到本地发现可以打开,而且swagger下载的文件大小比本地文 ...

  8. Java 通过EasyExcel导出的Excel文档的字体,背景色,自动列宽等符合要求

    这次开任务使用的是EasyExcel导出Excel文档,但是在任务过程中,生成的文档的格式要求并不符合产品和测试的期望值,如图: 想着自己地位低下,也无能力反驳.只好硬着头皮查阅资料来达到他们的想要的 ...

  9. EasyExcel导出xlsx时,某一列的数据为空

    问题:EasyExcel导出xlsx时,某一列的数据为空 问题来源:字段的命名在读取时,出现了问题 这个字段,我们可以debug一下, 有的时候会变成bid ,这个时候就会导致导出字段为空 解决办法: ...

最新文章

  1. 阿里云Windows服务器重启后无法远程桌面连接,大量注册表在检测
  2. 在windows环境下基于sublime text3的node.js开发环境搭建
  3. linux 错误 too many open files 解决方案
  4. spring 项目中集成 Protocol Buffers 示例
  5. 爬虫-代理的质量控制
  6. php删除表格命令,数据表格-删除
  7. 并发教程--JAVA5中 计数信号量(Counting Semaphore)例子
  8. 阿里云移动推送 - 异常记录
  9. 电压转电流模块电路设计原理解析
  10. NFS挂载失败: bad option; for several filesystems (e.g. nfs, cifs) you might need a /sbin/mount.
  11. QQ空间无法点赞或者QQ空间点赞被取消
  12. JSP中page指令
  13. MM-Wiki部署方案
  14. 如何使用 Axios 中的请求拦截器 和响应拦截器
  15. Web3D 从入门到跑路 · 3D 初体验
  16. 这是我们公司总结的一些关于中文乱码问题的一些解决方案和经验和大家分享
  17. 读《程序员修炼之道-从小工到专家》有感
  18. Java的Enum枚举反编译的结果(为什么它是一个枚举对象是一个单例)
  19. 一款超牛逼的神仙级接私活软件!吊到不行
  20. 数仓中指标-标签,维度-度量,自然键-代理键,数据集市等各名词解析及关系

热门文章

  1. 车管所免检测审车流程
  2. [渝粤教育] 无锡商业职业技术学院 团队管理 参考 资料
  3. H2O技术方案预研分析
  4. 高通ims架构android,深度揭密高通4/5G移动基带消息系统和状态机
  5. 一个近乎完美的Unity全平台原生c#热更方案
  6. J2ME 2D小游戏入门之旅(五) 实现爆炸效果、并加入道具导弹(转)
  7. i5 1230u怎么样 i51230u相当于什么水平级别
  8. (程序详解)51单片机+DS12C887+1602高精度时钟,软件:keil4,Proteus 8
  9. 架构——20——Jenkins+Gitlab实现持续集成——3
  10. Windows下的JavaFX桌面应用程序打包ABC