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

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

1、简介

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

2、正文

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

3、核心代码

java 复制代码
/**
 * 增加序号列
 *
 * @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、使用方法

java 复制代码
WriteSheet writeSheet = EasyExcel.registerWriteHandler(new AddNoHandler()).build()

5、效果

相关推荐
在掘金1 天前
【kk-utils】Excel工具——实践篇(一)
前端·excel
在掘金2 天前
【kk-utils】Excel工具——excel-js
前端·excel
安全菜鸟2 天前
DeepSeek 接入 Excel 完整教程
excel
陌漠ardently2 天前
正则表达式和excel文件保存(python)
python·mysql·excel
CodeJourney.2 天前
从PPT到DeepSeek开启信息可视化的全新之旅
数据库·人工智能·算法·excel·流程图
inxunoffice3 天前
批量将文件夹名称、文件夹路径提取到 Excel 清单
excel
inxunoffice3 天前
导入 Excel 批量替换文件夹名称
excel
CodeJourney.3 天前
利用DeepSeek实现文档到流程图的高效转换:技术应用与实践探索
数据库·人工智能·算法·excel·流程图
小军要奋进3 天前
用excel做九乘九乘法表
笔记·excel