EasyExcel 导出冻结指定行

news2024/10/5 21:19:47

导出的实体类

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.csdn.net/qq_38974638/article/details/117197652

EasyExcel github demo

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1183019.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言面试

数据类型&#xff08;基本内置类型&#xff09; char //字符数据类型 short //短整型 int //整型 long //长整型 long long //更长的整型 float //单精度浮点数 double //双精度浮点数 类型的基本归类 整形家族&#xff1a; …

redis笔记 三 redis持久化

文章目录 Redis持久化RDB持久化执行时机RDB原理小结 AOF持久化AOF原理AOF配置AOF文件重写 RDB与AOF对比 Redis持久化 redis持久化是为了解决redis宕机时丢失数据的问题&#xff0c;Redis有两种持久化方案&#xff1a; RDB持久化AOF持久化 RDB持久化 RDB全称Redis Database …

避免重复请求:接口重试机制最佳实践

避免重复请求是设计接口重试机制时的重要考量之一。在实际的系统开发中&#xff0c;网络通信、服务调用等操作可能会面临重试的情况&#xff0c;而重试请求如果不加以处理可能导致重复执行业务逻辑、产生重复数据或是对服务端造成压力&#xff0c;因此如何有效避免重复请求成为…

Spring Boot项目中通过 Jasypt 对属性文件中的账号密码进行加密

下面是在Spring Boot项目中对属性文件中的账号密码进行加密的完整步骤&#xff0c;以MySQL的用户名为root&#xff0c;密码为123321为例&#xff1a; 步骤1&#xff1a;引入Jasypt依赖 在项目的pom.xml文件中&#xff0c;添加Jasypt依赖&#xff1a; <dependency><…

easyConnect虚拟网卡未安装,导致连接失败(虚拟网卡安装失败)

前言 使用easyConnect&#xff0c;但是一直连接失败&#xff0c;看到提示错误 虚拟网卡未安装&#xff0c;请确保虚拟网卡安装成功 我的错误原因是因为我自己装过VM虚拟机&#xff0c;用过虚拟网卡然后产生的虚拟网卡冲突 解决方式 1.打开网络设置2.选择你的网络&#xff08…

chatgpt升级啦,训练数据时间更新到2023年4月,支持tools(升级functionCall),128k上下文

&#xff08;2023年11月7日&#xff09; gpt-4-1106-preview https://platform.openai.com/docs/models/gpt-4-and-gpt-4-turbo 训练数据日期升级到2023年四月 上线文增加到128k 调用一次chatgpt接口&#xff0c;可以得到多次函数调用 import OpenAI from "openai"…

1-前端基本知识-HTML

1-前端基本知识-HTML 文章目录 1-前端基本知识-HTML总体概述什么是HTML&#xff1f;超文本标记语言 HTML基础结构文档声明根标签头部元素主体元素注释 HTML概念词汇&#xff1a;标签、属性、文本、元素HTML基本语法规则HTML常见标签标题标签段落标签换行标签列表标签超链接标签…

华为取消6000万订单影响在扩大,高通嘴硬强调不受影响

高通公布了2023年第三季度的业绩&#xff0c;业绩显示营收下滑24%&#xff0c;净利润下滑36%&#xff0c;不过高通强调预计今年四季度业绩将回升&#xff0c;意思是说华为取消订单带来的影响较小。 一、高通处境不利已延续4年时间 2019年美国对华为采取措施&#xff0c;众多中国…

go程序获取工作目录及可执行程序存放目录的方法-linux

简介 工作目录 通常就是指用户启动应用程序时&#xff0c;用户当时所在的文件夹的绝对路径。 如&#xff1a;root用户登录到linux系统后&#xff0c;一顿cd&#xff08;change directory&#xff09;后, 到了/tmp文件夹下。此时&#xff0c;用户要启动某个应用程序&#xff0…

组成原理备考学习 day1 (第一章)

组成原理备考学习 day1 第一章 系统概述1.1 计算机发展史1.1.1 计算机软硬件的发展计算机硬件的发展计算机软件的发展 1.1.2 计算机的分类和发展方向 1.2 计算机系统层次结构1.2.1 计算机系统的组成1.2.2 CPU及工作过程取数指令 1.2.3 I/O设备1.2.4 软件系统计算机编程语言 1.2…

Android Studio新建项目下载依赖慢,只需一个操作解决

新建的安卓工程&#xff0c;下载依赖贼慢怎么办&#xff1f;水一篇吧。 首先新建工程&#xff0c;建好以后项目就自动开始下载了&#xff0c;底部开始出现进度条&#xff0c;但是进度条一直不怎么动&#xff0c;网速也就十几k&#xff0c;要是等他下载得下一天。 直入主题&…

html+css 通过div模拟出一个表格样式,优化多个边框导致的宽度计算问题

htmlcss 通过div模拟出一个表格样式&#xff0c;优化多个边框导致的宽度计算问题 实现代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, i…

json字符串转为开闭区间

1.需求背景 1.1 前端页面展示 1.2 前后端约定交互json 按照页面每一行的从左到右 * 示例 [{"leftSymbol":">","leftNum":100,"relation":"无","rightSymbol":null,"rightNum":0}, {"left…

【Unity细节】VS不能附加到Unity程序中解决方法大全

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 秩沅 原创 &#x1f636;‍&#x1f32b;️收录于专栏&#xff1a;unity细节和bug &#x1f636;‍&#x1f32b;️优质专栏 ⭐【…

Socks5代理怎么样?安全性高吗?

Socks5代理IP的安全性取决于多个因素&#xff0c;包括代理服务器的信任度、代理提供商的可靠性以及你在使用代理时的需要注意一些动作。 下面分享一些关于Socks5代理IP安全性的重要考虑因素&#xff1a; 1. 代理服务器的信任度&#xff1a;使用代理时&#xff0c;您要确保选择信…

【笔记】原型和原型链(持续完善)

概念 原型&#xff1a;函数都具有 prototype 属性&#xff0c;称之为原型&#xff0c;也称之为原型对象 1.1 原型可以放一些属性和方法&#xff0c;共享给实例对象使用&#xff08;也就是原生方法&#xff09;。 1.2 原型可以做继承原型链&#xff1a;对象都有 __proto__ 属性…

「Verilog学习笔记」多功能数据处理器

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 分析 注意题目要求输入信号为有符号数&#xff0c;另外输出信号可能是输入信号的和&#xff0c;所以需要拓展一位&#xff0c;防止溢出。 timescale 1ns/1ns module data_…

HR人才测评,采用线上测评做春招秋招

从人力资源管理的工作&#xff0c;已经有好些年了&#xff0c;我只想说这不是一个有创意和创造性的工作&#xff0c;因为大部分时间我都在从事数据方面的工作。关于公司内部的文案工作先且不说&#xff0c;这里分享下我做招聘工作的过程。 每年春秋两季的校招&#xff0c;算是…

安防监控EasyCVR视频汇聚平台使用海康SDK播放时,画面播放缓慢该如何解决?

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。安防视频平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;具体可实现视频监控直播、视频轮播、视频录像、云存储、…

MySQL数据库调优策略

1. 数据库调优的措施 1.1 调优的目标 尽可能节省系统资源&#xff0c;以便系统可以提供更大负荷的服务。&#xff08;吞吐量更大&#xff09; 合理的结构设计和参数调整&#xff0c;以提高用户操作 响应的速度。&#xff08;响应速度更快&#xff09; 减少系统的瓶颈&#xff0…