forked from fanruan/easyexcel
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
1.1 KiB
34 lines
1.1 KiB
package com.alibaba.excel.write.merge; |
|
|
|
import org.apache.poi.ss.usermodel.Cell; |
|
import org.apache.poi.ss.usermodel.Sheet; |
|
import org.apache.poi.ss.util.CellRangeAddress; |
|
|
|
import com.alibaba.excel.metadata.Head; |
|
|
|
/** |
|
* The regions of the loop merge |
|
* |
|
* @author zhuangjiaju |
|
*/ |
|
public class LoopMergeStrategy extends AbstractMergeStrategy { |
|
private int eachRow; |
|
private int eachColumn; |
|
|
|
public LoopMergeStrategy(int eachRow, int eachColumn) { |
|
if (eachRow < 1 || eachColumn < 1) { |
|
throw new IllegalArgumentException("All parameters must be greater than 1"); |
|
} |
|
this.eachRow = eachRow; |
|
this.eachColumn = eachColumn; |
|
} |
|
|
|
@Override |
|
protected void merge(Sheet sheet, Cell cell, Head head, int relativeRowIndex) { |
|
if (relativeRowIndex % eachRow == 0 && head.getColumnIndex() % eachColumn == 0) { |
|
CellRangeAddress cellRangeAddress = new CellRangeAddress(cell.getRowIndex(), |
|
cell.getRowIndex() + eachRow - 1, cell.getColumnIndex(), cell.getColumnIndex() + eachColumn - 1); |
|
sheet.addMergedRegion(cellRangeAddress); |
|
} |
|
} |
|
}
|
|
|