《使用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()