package com.ycl.jxkg.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<Integer> mergeWhichColumn;
|
|
public FixedMergeCellStrategy(Integer startRow, Integer mergeRowNumber, List<Integer> 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);
|
}
|
}
|
}
|