/**
* 合并列单元格
* @param xfSheet 工作表对象
* @param column 需要合并的列
* @param row 从第row行开始合并
* @param begin 跳过空白行开始的行数
*/
public void mergedColumn(Sheet xfSheet, int column, int row, int begin) {
int regionStart = 1;
Map<Integer, Integer> map = new LinkedHashMap<>();
List<Map<Integer, Integer>> list = new ArrayList<>();
for (int i = begin; i < xfSheet.getPhysicalNumberOfRows(); i++) {
if (i < xfSheet.getLastRowNum()) {
String secondIndex = xfSheet.getRow(i).getCell(column).getStringCellValue();
String secondIndex2 = xfSheet.getRow(i + 1).getCell(column).getStringCellValue();
if (!secondIndex.equals(secondIndex2)) {
map.put(regionStart, i);
regionStart = i + 1;
}
} else if (i == xfSheet.getLastRowNum()) {
map.put(regionStart, i);
regionStart = i + 1;
}
}
list.add(map);
for (Map<Integer, Integer> rmap : list) {
for (Integer i : rmap.keySet()) {
if (i >= row) {
if (!i.equals(rmap.get(i))) {
xfSheet.addMergedRegion(new CellRangeAddress(i, rmap.get(i), column, column));
}
}
}
}
}
POI相同列下合并单元格值相同的行(上下行合并)
于 2023-06-16 16:53:51 首次发布