• Spring Boot集成Easypoi导出Excel


     

    目录

    1.引入Maven依赖

    2.实体类属性加上@Excel注解

    3.导出示例

    4.导出结果

     5.注解@Excel说明


    1.引入Maven依赖

    1. <dependency>
    2. <groupId>cn.afterturngroupId>
    3. <artifactId>easypoi-spring-boot-starterartifactId>
    4. <version>4.3.0version>
    5. dependency>

    2.实体类属性加上@Excel注解

    需要导出的属性才加上@Excel注解,不加注解的属性不会导出

    1. package com.test.entity;
    2. import java.util.Date;
    3. import cn.afterturn.easypoi.excel.annotation.Excel;
    4. import lombok.Data;
    5. /**
    6. * 测试实体
    7. */
    8. @Data
    9. public class ExcelVO {
    10. /**
    11. * 主键ID
    12. */
    13. private String id;
    14. /**
    15. * 用户名
    16. */
    17. @Excel(name = "用户名", orderNum = "1", width = 10)
    18. private String name;
    19. /**
    20. * 年龄
    21. */
    22. @Excel(name = "年龄", orderNum = "2", type = 10, width = 10)
    23. private Integer age;
    24. /**
    25. * 性别: 1.男 2.女
    26. */
    27. @Excel(name = "性别", orderNum = "3", replace = {"男_1", "女_2"}, width = 10)
    28. private Integer sex;
    29. /**
    30. * 备注
    31. */
    32. @Excel(name = "备注", orderNum = "4", width = 20)
    33. private String remark;
    34. /**
    35. * 创建时间
    36. */
    37. @Excel(name = "创建时间", orderNum = "5", width = 20, exportFormat = "yyyy-MM-dd HH:mm:ss")
    38. private Date createTime;
    39. }

    3.导出示例

    建议用浏览器测试,如果用postman导出execl文件名会为response.xls,是正常的

    postman导出execl文件名为response.xls问题_涛哥是个大帅比的博客-CSDN博客

    1. package com.test.controller;
    2. import java.io.OutputStream;
    3. import java.net.URLEncoder;
    4. import java.text.SimpleDateFormat;
    5. import java.util.ArrayList;
    6. import java.util.Calendar;
    7. import java.util.Date;
    8. import java.util.List;
    9. import javax.servlet.http.HttpServletResponse;
    10. import org.apache.poi.ss.usermodel.Workbook;
    11. import org.springframework.web.bind.annotation.RequestMapping;
    12. import org.springframework.web.bind.annotation.RequestMethod;
    13. import org.springframework.web.bind.annotation.RestController;
    14. import com.test.entity.ExcelVO;
    15. import cn.afterturn.easypoi.excel.ExcelExportUtil;
    16. import cn.afterturn.easypoi.excel.entity.ExportParams;
    17. /**
    18. * excel导出测试
    19. */
    20. @RestController
    21. @RequestMapping("/excel")
    22. public class ExcelController {
    23. @RequestMapping(value = "/export", method = RequestMethod.GET)
    24. public void export(HttpServletResponse response) {
    25. /*
    26. * 测试数据
    27. */
    28. List list = new ArrayList();
    29. for (int i = 0; i < 10; i++) {
    30. ExcelVO excelVO = new ExcelVO();
    31. excelVO.setName("张三-"+i);
    32. excelVO.setSex(i%2==0?1:2);
    33. excelVO.setAge(i+10);
    34. excelVO.setRemark("备注-"+i);
    35. excelVO.setCreateTime(new Date());
    36. list.add(excelVO);
    37. }
    38. try {
    39. //导出
    40. String fileName = "用户列表";
    41. /*
    42. * @param title 标题名称,表格第一行会多一行标题,不需要设置为null
    43. * @param sheetName sheet页的名称
    44. */
    45. ExportParams exportParams = new ExportParams(null, fileName);
    46. /*
    47. * @param entity 表格标题属性
    48. * @param pojoClass Excel对象Class
    49. * @param dataSet Excel对象数据List
    50. */
    51. Workbook workbook = ExcelExportUtil.exportExcel(exportParams, ExcelVO.class, list);
    52. //当前时间作为文件名
    53. Calendar calendar = Calendar.getInstance();
    54. SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
    55. String nowDate = sdf.format(calendar.getTime());
    56. fileName += nowDate;
    57. // 设置输出的格式
    58. response.setCharacterEncoding("UTF-8");
    59. response.addHeader("content-type", "application/vnd.ms-excel");
    60. response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8") + ".xls"); // 设置下载后的文件名
    61. OutputStream os = response.getOutputStream();
    62. workbook.write(os);
    63. //关闭流
    64. os.flush();
    65. os.close();
    66. } catch (Exception e) {
    67. e.printStackTrace();
    68. }
    69. }
    70. }

    4.导出结果

     

     

     5.注解@Excel说明

    名称说明
    exportFormat导出的时间格式,示例:exportFormat = "yyyy-MM-dd HH:mm:ss"
    isWrap是否换行 即支持\n,默认true
    name列名
    orderNum排序,升序方式
    replace值替换  格式{a_id,b_id},示例:replace = {"男_1", "女_2"}
    type导出类型 1 是文本 2 是图片,3 是函数,10 是数字 默认是文本
    width每个列的宽 单位为字符,一个汉字=2个字符,限制1-255
    isColumnHidden是否需要隐藏该列 默认false

  • 相关阅读:
    RocketMQ 消息重新投递 解析——图解、源码级解析
    Surfer与Voxler数据处理及可视化
    国外访问学者/博士后留学人员反诈骗指南
    lightdb 支持兼容Oracle的to_clob函数
    树与二叉树
    2023华为OD机试真题-2023(A+B卷)【Java、C++、Go、Python】
    基于SSM的高校毕业选题管理系统设计与实现
    Vue+SpringBoot打造学生综合素质评价系统
    vue项目中实现用户登录以及token验证
    wandb不可缺少的机器学习分析工具
  • 原文地址:https://blog.csdn.net/u011974797/article/details/128037664