《使用EasyExcel在Excel中增加序号列的方法》

《使用EasyExcel在Excel中增加序号列的方法》

    • 1、简介
    • 2、正文
    • 3、核心代码
    • 4、使用方法
    • 5、效果

1、简介

在处理Excel文件时,有时候需要为表格增加序号列。本文介绍了如何使用Java代码实现在Excel中增加序号列的功能,并提供了一个示例代码。

2、正文

在处理Excel文件时,有时候我们需要在表格中增加序号列,以便更好地标识每一行的顺序。下面是一个使用Java代码在Excel中增加序号列的示例:

3、核心代码

/**
 * 增加序号列
 *
 * @author xiangtianlei
 * @date 2023/11/14
 */
@Component
public class AddNoHandler implements RowWriteHandler {

    private boolean init = true;

    @Override
    public void beforeRowCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder,
                                Integer rowIndex, Integer relativeRowIndex, Boolean isHead) {
        if (init) {
            // 修改存储头部及对应字段信息的 map, 将其中的内容均右移一位, 给新增的序列号预留为第一列
            ExcelWriteHeadProperty excelWriteHeadProperty = writeSheetHolder.excelWriteHeadProperty();
            Map<Integer, Head> headMap = excelWriteHeadProperty.getHeadMap();
            Map<Integer, ExcelContentProperty> contentMap = excelWriteHeadProperty.getContentPropertyMap();
            int size = headMap.size();
            for (int current = size; current > 0; current--) {
                int previous = current - 1;
                headMap.put(current, headMap.get(previous));
                contentMap.put(current, contentMap.get(previous));
            }
            // 空出第一列
            headMap.remove(0);
            contentMap.remove(0);
            // 只需要修改一次 map 即可, 故使用 init 变量进行控制
            init = false;
        }
    }

    @Override
    public void afterRowCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row,
                               Integer relativeRowIndex, Boolean isHead) {
        // 在行创建完成后添加序号列
        Cell cell = row.createCell(0);
        int rowNum = row.getRowNum();
        if (rowNum == 0) {
            cell.setCellValue("序号");
        } else {
            cell.setCellValue(rowNum);
        }
    }

    @Override
    public void afterRowDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row,
                                Integer relativeRowIndex, Boolean isHead) {
        if (row.getLastCellNum() > 1) {
            // 将自定义新增的序号列的样式设置与默认的样式一致
            row.getCell(0).setCellStyle(row.getCell(1).getCellStyle());
        }
    }

}

4、使用方法

WriteSheet writeSheet = EasyExcel.registerWriteHandler(new AddNoHandler()).build()

5、效果

![在这里插入图片描述](https://img-blog.csdnimg.cn/d603162cb1a6414faa75d78c90913a71.png

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ping: www.baidu.com: Name or service not known解决办法

解决服务器无法ping通外网问题 1、问题描述&#xff1a; 配置了网卡信息&#xff0c;发现还是无法访问外网&#xff0c;并报ping: www.baidu.com: Name or service not known信息 2、问题原因&#xff1a; 这就是外网没开通好 3、解决方法&#xff1a; 修改网卡文件&#xff…

在qt的设计师界面没有QVTKOpenGLWidget这个类,只有QOpenGLWidget,那么我们如何得到QVTKOpenGLWidget呢?

文章目录 前言不过,时过境迁,QVTKOpenGLWidget用的越来越少,官方推荐使用qvtkopengnativewidget代替QVTKOpenGLWidget 前言 在qt的设计师界面没有QVTKOpenGLWidget这个类,只有QOpenGLWidget,我们要使用QVTKOpenGLWidget,那么我们如何得到QVTKOpenGLWidget呢? 不过,时过境迁,Q…

Vue中的watch的使用

先看下Vue运行机制图 那么我们思考一件事&#xff0c;vue是通过watcher监听数据的变化然后给发布-订阅&#xff0c;这样实现了dom的渲染&#xff0c;那么我们思考一件事&#xff0c;我们往往需要知道一个数据的变化然后给页面相应的渲染&#xff0c;那么我们工作中在组件中的数…

【nlp】2.3 LSTM模型

LSTM模型 1 LSTM介绍2 LSTM的内部结构图2.1 LSTM结构分析2.2 Bi-LSTM介绍2.3 使用Pytorch构建LSTM模型2.4 LSTM优缺点1 LSTM介绍 LSTM(Long Short-Term Memory)也称长短时记忆结构, 它是传统RNN的变体,与经典RNN相比能够有效捕捉长序列之间的语义关联,缓解梯度消失或爆炸…

Windows10下Docker安装Mysql5.7

文章目录 Windows10下Docker安装Mysql5.7环境说明打开命令工具搜索镜像拉取镜像查看所有镜像启动镜像查看容器查看所有容器查看运行中容器 进入容器进入容器命令输入账号命令输入密码 添加mysql的远程账号创建一个数据库 Windows10下Docker安装Mysql5.7 环境说明 docker&…

几款数据备份软件调研与使用

目的 为确保企业数据安全、避免被非法入侵、数据勒索、破坏业务连续性、及时对重要数据、业务数据、程序、进行备份做到有备无患。遇到突发事件可使用备份数据快速恢复。保障系统正常运行 Filezilla工具介绍&#xff1a; FileZilla是一个免费开源的FTP软件&#xff0c;分为客户…

超级账本区块链Fabric2.4.4版本搭建过程(完整过程)

前提环境:乌班图20.04环境 安装所需要的工具 先配置一下代理源为阿里云代理&#xff1a; sudo apt-get update 更新源 sudo apt-get install ssh 安装远程客户端 sudo apt-get install curl 安装命令行工具 sudo apt-get install git 安装git sudo apt-get install gcc 安装…

BUUCTF easyre 1

BUUCTF:https://buuoj.cn/challenges 题目描述&#xff1a; 下载附件&#xff0c;解压得到一个.exe文件。 密文&#xff1a; 解题思路&#xff1a; 1、使用IDA pro打开exe文件&#xff0c;在反汇编窗口&#xff08;IDA View-A&#xff09;&#xff0c;直接找到flag。 也可以…

KODExplorer中ace.js代码编辑器中自定义PHP提示片段

目录 KODExplorerace.js参考 KODExplorer 这是搭建云盘工具&#xff0c;该工具可以作为在线开发工具使用&#xff0c;其中使用了ace.js作为编辑器&#xff0c;这里主要讲解ace.js编辑器中如何自定义代码提示下载旧版本&#xff0c;再升级到新版本&#xff0c;直接下载新版本没…

解决 requests-2.17.3 依赖 chardet 库版本不匹配的问题

问题背景 在使用 requests-2.17.3 版本时&#xff0c;我遇到了一个异常&#xff1a;“Requests dependency ‘chardet’ must be version > 3.0.2, < 3.1.0”。我尝试运行了以下命令来修复问题&#xff0c;但仍然无法解决&#xff1a; pip install -U chardet > 3.0…

【Maven】基础快速入门

文章目录 1、Maven概述1.1、Maven是什么1.2、Maven的作用 2、下载安装Maven2.1、新版下载2.2、旧版下载2.3、安装2.4、配置环境变量2.5、配置阿里云镜像2.6、配置本地仓库 3、Maven基础概念3.1、坐标 4、Maven依赖管理4.1、依赖配置与依赖传递4.1.1、依赖传递冲突4.1.2、可选依…

CH12_处理继承关系

函数上移&#xff08;Pull Up Method&#xff09; 反向重构&#xff1a;函数下移&#xff08;Push Down Method&#xff09; class Employee {/*...*/} class Salesman extends Employee {get name() {/*...*/} } class Engineer extends Employee {get name() {/*...*/} }cla…

软件性能测试学习笔记(LoadRunner):从零开始

文章目录 概述LoadRunner的使用创建编辑脚本&#xff08;Virtual User Generator&#xff09;集合点思考时间事务检查点关联参数化 运行负载测试&#xff08;Controller&#xff09; 性能测试报告场景设置表格测试指标记录表 其他的杂谈内容 概述 软件的性能测试与软件的功能测…

在抖音电商,他们帮女性实现了L码自由

“很多&#xff08;女装&#xff09;店铺只做到L&#xff0c;甚至L&#xff08;其实&#xff09;是M码。”身高1米6、体重60公斤的达人鸭嗓明明120斤 在抖音上吐槽道&#xff0c;“尤其是夏天的连衣裙&#xff0c;胸围很多不超过85厘米&#xff0c;那它的意思就是你可以胖&…

优思学院|一文快速看懂TRIZ原理

在创新领域&#xff0c;TRIZ被翻译为发明问题的解决理论。TRIZ理论深刻揭示了创造发明的内在规律和原理&#xff0c;专注于澄清和强调系统中存在的矛盾&#xff0c;旨在完全解决这些矛盾&#xff0c;实现最终的理想解决方案。实践证明&#xff0c;运用TRIZ理论不仅能够极大地加…

python安装pip install报错Could not fetch URL https://pypi.org/simple/pip/...更换镜像源

更换镜像源 一. 现象pycharm使用 pip install xxx安装包时&#xff0c;一直报错&#xff1a; 二. 原因&#xff1a;三. 解决办法&#xff1a;一. 临时使用二. 永久更改三. 永久更改1. Windowswindows环境下Windows&#xff08;示例win10&#xff09; 2. Linux or Mac3. Pycharm…

【从删库到跑路】MySQL数据库 | 全局锁 | 表级锁 | 行级锁

文章目录 &#x1f339;简述&#x1f384;全局锁⭐数据备份&#x1f388;设置全局锁&#x1f388;对表进行备份&#x1f388;释放锁 &#x1f384;表级锁&#x1f6f8;表锁⭐读锁⭐写锁 &#x1f6f8;元数据锁&#x1f6f8;意向锁⭐意向共享锁⭐意向排他锁 &#x1f384;行级锁…

类属性修改(为什么python类不具备被赋值能力?)

为什么python类不具备被赋值能力&#xff1f;&#xff0c;用魔术方法收集实参&#xff0c;在类中可以定义方法处理实际参数&#xff0c;实现对类“赋值”。 (笔记模板由python脚本于2023年11月15日 12:45:27创建&#xff0c;本篇笔记适合初通Python类class的coder翻阅) 【学习的…

Fedora Linux 39 正式版官宣 11 月 发布

导读Fedora Linux 39 正式版此前宣布将于 10 月底发布&#xff0c;不过这款 Linux 发行版面临了一些延期&#xff0c;今天开发团队声称&#xff0c;Fedora Linux 39 正式版将于 11 月 7 日发布。 过查询得知&#xff0c;在近日的 "Go / No-Go" 会议上&#xff0c;开…

多维时序 | MATLAB实现PSO-BiLSTM-Attention粒子群优化双向长短期记忆神经网络融合注意力机制的多变量时间序列预测

多维时序 | MATLAB实现PSO-BiLSTM-Attention粒子群优化双向长短期记忆神经网络融合注意力机制的多变量时间序列预测 目录 多维时序 | MATLAB实现PSO-BiLSTM-Attention粒子群优化双向长短期记忆神经网络融合注意力机制的多变量时间序列预测预测效果基本介绍模型描述程序设计参考…