EasyExcel 导出冻结指定行

【EasyExcel】动态冻结行列与智能筛选的实战指南 本文详细介绍了使用EasyExcel实现动态冻结行列与智能筛选的实战技巧。通过SheetWriteHandler接口,开发者可以灵活控制Excel生成过程,实现冻结表头和指定列的功能,同时结合智能筛选器提升数据浏览效率。文章包含完整代码示例和最佳实践,帮助开发者快速掌握这一实用技能。 阅读详情

导出的实体类

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 会导致各种问题,请直接用浏览器或者用postman
            response.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() {
                @Override
                public void beforeSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
                }

                @Override
                public 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.youkuaiyun.com/qq_38974638/article/details/117197652

EasyExcel github demo

从源码到实践:解密EasyExcel动态冻结策略的扩展性设计 本文深入解析EasyExcel动态冻结策略的实现与扩展,从基础冻结表头到复杂业务场景的动态配置,详细介绍了如何通过代码实现冻结指定列和行,并结合筛选器提升报表可读性。文章还提供了性能优化和异常处理的最佳实践,帮助开发者高效处理大型Excel导出任务。 阅读详情

相关推荐

easyExcel自定义导出,指定列,设置请求头背景色,加入合计行,设置合计行字体,背景色等等

2.工具类-自定义样式handler-CustomCellWriteHandler。3.工具类-导出 ExcelUtils。1.引入easyExcel pom。

cf 5799

EasyExcel锁定指定单元格 & 禁止表格复制

介绍如何使用EasyExcel在导出时对部分单元格进行锁定,以及如何禁止exce表格被复制。

qq_33841411的博客 1万+

python blp模型 估计_随机系数Logit模型及Stata实现

欢迎投稿(荐稿)计量经济圈,计量相关都行邮箱:econometrics666@sina.cn作者:北京交通大学经济管理学院博士生,王琦珀。欢迎你加入计量经济圈社群,一起探讨前沿计量理论和实证方法。一、随机系数Logit模型1.背景实证产业组织(Empirical Industrial Organization,EIO)是目前产业组织理论的前沿,其中又以Ariel Pakes为带头人,其近期工作论文...

weixin_42298927的博客 2641

基于EasyExcel锁定指定列导出数据到excel

基于EasyExcel锁定指定列导出数据到excel

爱笑的boy的博客 5757

一。CST 电路 微带低通滤波器设计练习 I

CST 电路和系统软件功能还是比较强的,我们一起一步一步学习,一起进步。 这个例子出现在CST的电路和系统软件功能(Circuit Simulation & SAM (System Assembly and Modeling) )介绍资料中。本文是用CST2021建模操作仿真到,不同版本在视觉和结果上稍有不同。 利用电路模块可以很快很准确地建立3D微带平面电路,用于仿真滤波器、功分器、巴伦等等。

麦克斯韦信徒的博客 3235

Win11/Win10系统下,Proe5.0 M280终极版保姆级安装与激活指南(含SSQ补丁避坑)

本文提供Win11/Win10系统下Pro/E 5.0 M280终极版的详细安装与激活指南,涵盖环境配置、SSQ补丁应用及常见问题解决方案。通过系统调整、分步安装和性能优化,确保软件在现代操作系统上的稳定运行,特别适合机械设计用户参考。

weixin_30895059的博客 440

EasyExcel导出模版数据锁定表格

easyExcel导出模板数据锁定部分不让编辑

baidu_38321323的博客 1908

【雷达仿真 | FMCW TDMA-MIMO毫米波雷达信号处理仿真(可修改为DDMA-MIMO)】

1、FMCW叫做调频连续波,调频连续波有步进调频连续波(SFMCW)、线性调频连续波(LFMCW),以及其他非线性调频连续波。LFMCW有锯齿波和三角波等等;锯齿波有恒定调制周期的锯齿波和非恒定周期的锯齿波。Introduction to mmwave sensing:FMCW radars.pdf和The fundamentals of millimeter wave sensors。2、MIMO是多输入多输出(Multiple input Multiple output),也就是多发多收。

【调皮连续波】雷达技术领域知识博主 1万+

Excel——设定单元格保护不可编辑

前言:Excel表格中为了保护一些数据不被改动,经常会把不希望改动的数据区域设定为锁定模式,以下是相关操作记录。   把一张工作表分为可编辑区域与不可编辑区域,步骤如下: 选中表格中的准备锁定的区域 右键=>“设置单元格格式”=>“保护”=>"锁定"选项打上勾 选中表格中的准备编辑区域 右键=>“设置单元格格式”=>“保护”=>"锁定"选项取消勾 找到工具栏中“审阅”=>“保护工作表”,确定即可   这样再次试图修改不可编辑区域,会跳不可修改的提示即可。 .

qq_36749906的博客 7834

JavaScript教程-字符集,Unicode转义序列,标识符,数据类型,数字,未定义值,浮点数,字符串,引用数据类型,类型检测,类型转换,运算符,关系运算符,

前端学习

VAN 212

RAP Draft Handling 全面拆解:从独占 Draft 到协作 Draft 的架构与落地实践

独占 Draft 的启用点在行为定义头部的with draft。with draft;create;update;delete;with draft;上面这段代码来自一个完整的 Draft 启用示例,包含了 Draft 表声明、锁策略、ETag、Draft 动作等关键要素。:告诉框架草稿存哪。:告诉框架如何做并发控制与一致性保护。:把草稿生命周期动作显式暴露出来,让 UI 与事务引擎能正确驱动流程。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 957

easyexcel导出(冻结固定标题行、自定义合并导出)

【代码】easyexcel导出冻结(固定标题行)

qq_42240818的博客 3323

24、语料库与科技术语库建设

本文探讨了语料库在科技术语库建设中的关键作用,重点分析了词性标注、索引、搭配、词形还原、频率计数、词汇排序和类型-标记分析等核心技术的应用与挑战。文章以印度语言为例,指出其语料库处理工具匮乏的现状,强调需开发适配本地语言特征的技术,并提出一个整合多种处理步骤的综合流程,旨在推动印度语言科技术语数据库的系统化建设,促进科技语言的发展与应用。

cola5的博客 91

easyExcel下载导出

工具类: 一行多列合并工具类: import com.alibaba.excel.metadata.CellData; import com.alibaba.excel.metadata.Head; import com.alibaba.excel.write.handler.CellWriteHandler; import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; import com.alibaba.excel.write.met

weixin_47006244的博客 401

Three.js 完整实战项目:构建一个 3D 商品展示空间

Three.js 作为强大的 WebGL 框架,广泛应用于交互式 3D 场景开发,尤其适合创建沉浸式商品展示空间。本文将通过一个完整的实战项目,展示如何构建一个 3D 商品展示空间,涵盖项目架构、资源组织、多模型切换、交互热点绑定、移动端适配和帧率优化。项目以展示虚拟商品(如家具或电子产品)为核心,结合用户交互,基于 Vite、TypeScript 和 Tailwind CSS,支持 ES Modules,确保响应式布局,遵循 WCAG 2.1 可访问性标准。本文适合希望通过综合项目掌握 Three.js

zimin的专栏 1462

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

【EasyExcel】导出excel冻结表头和冻结指定列并支持筛选器

需求背景: 导出excel的同时冻结表头和前两列基础信息,方便导出后用户查看信息。 一、技术选型: easyExcel的自定义写策略处理:SheetWriteHandler 二、方案设计:(基于实现 SheetWriteHandler 接口) 1、重写afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder)方法

欢迎来到 程序猿 的博客 6484

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

EasyExcel基操-导出【行高、列宽、合并、冻结、公式等】导入

优缺点本文不做概述,官网很清楚,本文直接上手代码,操作java代码实现表格的导出(样式调整)、导入等操作。

weixin_45272815的博客 3887

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

easyexcel使用教程-导出篇

easyExcel使用教程–导出篇 开始准备工作 1、导入Maven依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.2.10</version> </dependency> <dependency> <groupId>or

chenxjuc的博客 3万+

EasyExcel设置指定行冻结以及筛选

EasyExcel冻结以及筛选

m0_46360888的博客 2059

EasyExcel 导出文件,冻结表头问题

EasyExcel使用过程的问题

hjc2c的博客 1524

SpringBoot集成阿里EasyExcel导出excel高级实战

/*** easyExcel枚举转换return "正常" . equals(cellData . getStringValue())?1 : 0;} try {//给字段重新赋值 String expression =(String) me . invoke(annotation);break;} }./*** easyExcel枚举转换。

Blueeyedboy521的博客 3006

SpringBoot使用EasyExcel导出Excel(含设置下拉框、表头冻结)

/下拉框内容,默认为空//下拉框起始行,默认为第二行(索引为1)//下拉框结束行,默认为最后一行@Override//调用上述的方法,解析ExcelSelected注解的值//设置从第一行到最后一行,当前字段所在列的所有单元格样式//将设定好的下拉框值解析到excel//创建数据校验规则//设置填入错误值时的报错样式//是否显示错误框//是否隐藏下拉箭头//创建错误框validation.createErrorBox("提示","只能选择下拉框中的值!

weixin_56637697的博客 1175

java excel 冻结_Java 冻结、解除冻结 Excel 的行和列

当我们在查看数据比较多的Excel工作表时,冻结窗口能够帮助我们固定指定的行或列,被冻结住的窗口将不会随着其他单元格的移动而移动,十分方便我们查看和对比数据。该文将介绍如何使用FreeSpire.XLS for Java在Excel文档中冻结首行/首列、同时冻结多行多列,以及如何解除冻结。基本步骤:1. 下载包并解压缩,然后将lib文件夹下的Spire.Xls.jar包作为依赖项导入到Java应用...

weixin_29741447的博客 1187

EasyExcel(FastExcel)Excel导出功能 技术文档

本次实现的Excel导出为Web端HTTP流式导出,直接将Excel文件写入HttpServletResponse输出流,浏览器自动下载,核心能力包含:支持任意实体类的结构化数据导出,泛型化封装,一行代码调用;自动适配列宽,根据单元格内容长度动态计算最优列宽;固定Excel表头(冻结第一行),滚动表格时表头常驻,提升体验;自定义数据类型转换:布尔值转中文描述、时间戳转格式化时间字符串;完善的异常处理与响应重置,导出失败时返回友好提示;10万条数据导出耗时5-10秒,内存占用极低。

qq_43513957的博客 1326

使用 Java 冻结 Excel 行和列:完整指南

在日常数据处理和报表生成中,Excel 扮演着不可或缺的角色。然而,当面对包含成百上千行、几十乃至上百列的大型 Excel 文件时,反复滚动查看数据往往会带来极大的不便。试想一下,当您向下滚动时,表头消失了;当您向右滚动时,关键的标识列也看不见了。这种“盲人摸象”式的体验无疑会严重影响工作效率和数据分析的准确性。那么,有没有一种方法能够固定住 Excel 的特定区域,无论我们如何滚动,这些区域始终保持可见呢?答案是肯定的,这就是 Excel 的“冻结窗格”功能。

SunnyDays1011的博客 684
上一篇: POI导出 Excel 加水印支持 SXSSFWorkbook 和 XSSFWorkbook 模式
bbccloud
博客等级 码龄11年 23粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值