package com.ruoyi.common.utils.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; public class ConfigurableMergeStrategy extends AbstractMergeStrategy { private final List mergeRegions; public ConfigurableMergeStrategy(List mergeRegions) { this.mergeRegions = mergeRegions; } @Override protected void merge(Sheet sheet, Cell cell, Head head, Integer relativeRowIndex) { // 检查当前单元格是否在任何一个合并区域内 for (CellRangeAddress region : mergeRegions) { if (cell.getRowIndex() == region.getFirstRow() && cell.getColumnIndex() == region.getFirstColumn()) { sheet.addMergedRegion(region); // 执行合并 break; } } } }