当前位置: 首页 > news >正文

EasyExcel 导出冻结指定行

导出的实体类

package org.jeecg.modules.eis.test;import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.*;
import lombok.Getter;
import lombok.Setter;
import org.apache.poi.ss.usermodel.HorizontalAlignment;import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;/*** EasyExcel 导出测试类*/
@Getter
@Setter
public class CheckItemDTO {@ContentStyle(horizontalAlignment = HorizontalAlignment.LEFT) // 设置内容文本左对齐@ContentFontStyle(fontHeightInPoints = 12) // 设置内容字体大小@HeadStyle(fillForegroundColor = 13) // 设置表头背景色@HeadFontStyle(fontHeightInPoints = 16) // 设置表头字体大小@ColumnWidth(12) // 设置宽度为20@ExcelProperty(value = "编码", index = 0)private String code;@ContentStyle(horizontalAlignment = HorizontalAlignment.LEFT) // 设置内容文本左对齐@ContentFontStyle(fontHeightInPoints = 12) // 设置内容字体大小@HeadStyle(fillForegroundColor = 13) // 设置表头背景色@HeadFontStyle(fontHeightInPoints = 16) // 设置表头字体大小@ColumnWidth(20) // 设置宽度为20@ExcelProperty(value = "名称", index = 1)private String name;@ContentStyle(horizontalAlignment = HorizontalAlignment.LEFT) // 设置内容文本左对齐@ContentFontStyle(fontHeightInPoints = 12) // 设置内容字体大小@HeadStyle(fillForegroundColor = 13) // 设置表头背景色@HeadFontStyle(fontHeightInPoints = 16) // 设置表头字体大小@ColumnWidth(20) // 设置宽度为30@ExcelProperty(value = "价格", index = 2)private BigDecimal price;@ContentStyle(horizontalAlignment = HorizontalAlignment.LEFT) // 设置内容文本左对齐@ContentFontStyle(fontHeightInPoints = 12) // 设置内容字体大小@HeadStyle(fillForegroundColor = 13) // 设置表头背景色@HeadFontStyle(fontHeightInPoints = 16) // 设置表头字体大小@ColumnWidth(20) // 设置宽度为30@ExcelProperty(value = "模态", index = 3)private String modality;@ContentStyle(horizontalAlignment = HorizontalAlignment.LEFT) // 设置内容文本左对齐@ContentFontStyle(fontHeightInPoints = 12) // 设置内容字体大小@HeadStyle(fillForegroundColor = 13) // 设置表头背景色@HeadFontStyle(fontHeightInPoints = 16) // 设置表头字体大小@ColumnWidth(30) // 设置宽度为30@ExcelProperty(value = "项目归属", index = 4)private String belong;public static List<CheckItemDTO> data() {int count = 50;List<CheckItemDTO> list = new ArrayList<>(count);for (int i = 0; i < count; i++) {int idx = (i + 1);CheckItemDTO e = new CheckItemDTO();e.setCode(String.valueOf(idx));e.setName("这是名称_" + idx);e.setPrice(BigDecimal.valueOf(100).add(new BigDecimal(idx)));e.setModality((idx % 2 == 0) ? "CT" : "MR");e.setBelong("格林蓝德");list.add(e);}return list;}
}

接口方法

    @RequestMapping(value = "/downloadExcel", method = RequestMethod.GET)public void downloadExcel(HttpServletResponse response) {ServletOutputStream outputStream = null;try {// 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postmanresponse.setContentType("application/vnd.ms-excel");response.setCharacterEncoding("utf-8");// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系String fileName = DateUtil.format(new Date(), DatePattern.PURE_DATETIME_PATTERN);response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");outputStream = response.getOutputStream();//冻结指定行:SheetWriteHandler 接口重对 afterSheetCreate 进行处理EasyExcel.write(outputStream, CheckItemDTO.class).sheet("模板").registerWriteHandler(new SheetWriteHandler() {@Overridepublic void beforeSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {}@Overridepublic void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {Sheet sheet = writeSheetHolder.getSheet();sheet.createFreezePane(1, 1); //冻结第一列,第一行}}).doWrite(CheckItemDTO.data());} catch (Exception e) {e.printStackTrace();} finally {IoUtil.close(outputStream); //关闭流。这里用到了 hutool 工具类}}

实际效果

在这里插入图片描述

参考

https://blog.csdn.net/qq_38974638/article/details/117197652

EasyExcel github demo

http://www.lryc.cn/news/222660.html

相关文章:

  • ke9案例三:页面提交文件,我服务器端接收
  • springboot调用第三方接口json转换成对象
  • uniapp使用vue3和ts开发小程序自定义tab栏,实现自定义凸出tabbar效果
  • 麒麟信安获批牵头成立国家关键领域信创行业产教融合共同体
  • 好消息,微信消费者投诉工具升级,可以直接回复用户、处理投诉了。。。
  • 手动修复 rabbitmq 报错 “Crash dump is being written to“
  • 日志门面技术
  • 机器人制作开源方案 | 管内检测维护机器人
  • k8s存储卷
  • View 自定义 - 属性 xml
  • 2007-2022年全国各地级市金融机构网点数据
  • OpenAI开发者大会掀起风暴:GPT模型价格狂降50%,应用商店即将亮相,AI技术将引爆全球!
  • yo!这里是STL::unordered系列简单模拟实现
  • 基础课25——业务流程分析
  • 快速实现一个企业级域名 SSL 证书有效期监控巡检系统
  • [SSD综述 1.5] SSD 主控和固件核心功能详解(万字)
  • Mybatis-Plus前后端分离多表联查模糊查询分页
  • 【Ruoyi管理后台】用户登录强制修改密码
  • 计算机网络基础知识1
  • 人机交互中的多/变尺度态势感知
  • 命名管道原理(和匿名管道的对比),mkfifo(命令行,函数),命名管道模拟实现代码+与多个子进程通信代码
  • pytest全局变量的使用
  • FreeRTOS源码阅读笔记2--list.c
  • 杂货铺 | citespace的使用
  • C++ 静态成员变量初始化规则
  • Docker安装、卸载,以及各种操作
  • 深入理解 C 语言的内存管理
  • 利用Caddy实现http反向代理
  • 【Qt之QVariant】使用
  • xv6实验课程--xv6的写时复制fork(2023)