package com.mindskip.xzs.excel; import com.alibaba.excel.metadata.Head; import com.alibaba.excel.write.merge.AbstractMergeStrategy; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.util.CellRangeAddress; import java.util.List; /** * @author:xp * @date:2024/3/16 11:20 */ public class FixedMergeCellStrategy extends AbstractMergeStrategy { /** * 起始位置 */ private Integer startRow; /** * 合并多少行 */ private Integer mergeRowNumber; /** * 哪些列需要合并行 */ private List mergeWhichColumn; public FixedMergeCellStrategy(Integer startRow, Integer mergeRowNumber, List mergeWhichColumn) { this.startRow = startRow; this.mergeRowNumber = mergeRowNumber; this.mergeWhichColumn = mergeWhichColumn; } @Override protected void merge(Sheet sheet, Cell cell, Head head, Integer relativeRowIndex) { for (Integer whichColumn : mergeWhichColumn) { CellRangeAddress cellRangeAddress = new CellRangeAddress(startRow, startRow + mergeRowNumber - 1, whichColumn, whichColumn); sheet.addMergedRegionUnsafe(cellRangeAddress); } } }