• SpringBoot+EasyExcel设置excel样式


    方式一:使用注解方式设置样式

    模板可通过@HeadFontStyle、@HeadStyle、@ContentFontStyle、@ContentStyle、@HeadRowHeight @ContentRowHeight等注解设置excel单元格样式;

    //字体样式及字体大小
    @HeadFontStyle(fontName = "宋体",fontHeightInPoints = 11)
    @ContentFontStyle(fontName = "宋体",fontHeightInPoints = 11)

    //标题样式
    @HeadStyle(wrapped = BooleanEnum.FALSE,
    horizontalAlignment= HorizontalAlignmentEnum.CENTER,
    verticalAlignment = VerticalAlignmentEnum.CENTER,
    borderLeft = BorderStyleEnum.THIN,
    borderRight = BorderStyleEnum.THIN,
    borderTop = BorderStyleEnum.THIN,
    borderBottom = BorderStyleEnum.THIN,
    fillForegroundColor = 49)

    //单元格内容样式
    @ContentStyle(wrapped = BooleanEnum.FALSE,
    horizontalAlignment= HorizontalAlignmentEnum.CENTER,
    verticalAlignment = VerticalAlignmentEnum.CENTER,
    borderLeft = BorderStyleEnum.THIN,
    borderRight = BorderStyleEnum.THIN,
    borderTop = BorderStyleEnum.THIN,
    borderBottom = BorderStyleEnum.THIN,
    fillForegroundColor = 9)

    //标题及数据行高
    @HeadRowHeight(24)
    @ContentRowHeight(25)
    public class CertifyOrderDetailsExcel {

    1. @ColumnWidth(10)
    2. @ExcelProperty(value = {"统计","名称"},index = 1)
    3. private String name;

     

    @ContentStyle(wrapped = BooleanEnum.TRUE,
            horizontalAlignment= HorizontalAlignmentEnum.CENTER,
            verticalAlignment = VerticalAlignmentEnum.CENTER,
            borderLeft = BorderStyleEnum.THIN,
            borderRight = BorderStyleEnum.THIN,
            borderTop = BorderStyleEnum.THIN,
            borderBottom = BorderStyleEnum.THIN,
            fillForegroundColor = 9)

     

    1. 使用easyexcelFactory将数据到出excel文件
    2. 业务实现导出核心部分代码如下:
    3. //此处list为需要导出的数据,通过数据库查询
    4. List<Object> list = null;
    5. // ServletOutputStream outputStream = response.getOutputStream();
    6. //将列表导成excel,fileName为文件的具体路径(自行设定),也可为outputStream输出流
    7. //CertifyOrderDetailsExcel.class为上面配置的excel模板类
    8. EasyExcel.write(fileName, CertifyOrderDetailsExcel.class)
    9. .sheet("统计")
    10. .relativeHeadRowIndex(0)
    11. .doWrite(list);

    方式二:整体设置样式

    1. public static <T> void writeExcel(HttpServletRequest request, HttpServletResponse response, List<T> data, Class tClass, String name){
    2. try {
    3. name = java.net.URLEncoder.encode(name, "UTF-8").replaceAll("\\+", "%20");
    4. String dateStr = String.valueOf(LocalDate.now().getMonthValue())+"-"+LocalDate.now().getDayOfYear();
    5. name = name+dateStr;
    6. //防止下载时中文乱码
    7. name = new String(name.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1);
    8. response.setCharacterEncoding("utf-8");
    9. //添加这个是防止前端拿不到Content-disposition
    10. response.setHeader("Content-Disposition", "attachment;filename=" + name+".xlsx");
    11. response.setHeader("Access-Control-Expose-Headers","Content-disposition");
    12. WriteCellStyle headWriteCellStyle = new WriteCellStyle();
    13. WriteFont headWriteFont = new WriteFont();
    14. headWriteFont.setFontHeightInPoints((short) 12);
    15. headWriteCellStyle.setWriteFont(headWriteFont);
    16. //内容样式策略
    17. WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
    18. contentWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
    19. contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.LEFT);
    20. contentWriteCellStyle.setBorderLeft(BorderStyle.THIN);
    21. contentWriteCellStyle.setBorderTop(BorderStyle.THIN);
    22. contentWriteCellStyle.setBorderRight(BorderStyle.THIN);
    23. contentWriteCellStyle.setBorderBottom(BorderStyle.THIN);
    24. //设置 自动换行
    25. contentWriteCellStyle.setWrapped(true);
    26. // 字体策略
    27. WriteFont contentWriteFont = new WriteFont();
    28. // 字体大小
    29. contentWriteFont.setFontHeightInPoints((short) 12);
    30. contentWriteCellStyle.setWriteFont(contentWriteFont);
    31. // 这里需要设置不关闭流
    32. EasyExcelFactory.write(response.getOutputStream(), tClass).registerWriteHandler(new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle)).autoCloseStream(Boolean.FALSE).sheet("毛坯反馈参数(越南)").doWrite(data);
    33. } catch (Exception e) {
    34. //log.error("文件导出失败,错误信息{}",e);
    35. // 重置response
    36. response.reset();
    37. response.setContentType("application/json");
    38. response.setCharacterEncoding("utf-8");
    39. try {
    40. response.getWriter();
    41. } catch (IOException ioException) {
    42. ioException.printStackTrace();
    43. }
    44. }
    45. }

  • 相关阅读:
    天下谁人不识“金” — SONY NW-WM1ZM2 索尼金砖二代测评
    Linux学习(二)
    webpack做HTTP压缩
    运维中心—监控大盘
    2023年CSP-J1入门级第一轮题解
    Nacos 配置中心
    《牛客刷verilog》Part II Verilog进阶挑战
    熟悉Java内存模型JMM
    【数据库】E-R图相关知识、绘制方法及工具推荐
    哈佛参考文献注释体系与学术规范
  • 原文地址:https://blog.csdn.net/u011518709/article/details/134458007