|
|
@@ -31,6 +31,19 @@ public final class PoiMergeCellUtil { |
|
|
|
* @param startRow 开始行
|
|
|
|
*/
|
|
|
|
public static void mergeCells(Sheet sheet, Map<Integer, int[]> mergeMap, int startRow) {
|
|
|
|
mergeCells(sheet, mergeMap, startRow, sheet.getLastRowNum());
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 纵向合并相同内容的单元格
|
|
|
|
*
|
|
|
|
* @param sheet
|
|
|
|
* @param mergeMap key--列,value--依赖的列,没有传空
|
|
|
|
* @param startRow 开始行
|
|
|
|
* @param endRow 结束行
|
|
|
|
*/
|
|
|
|
public static void mergeCells(Sheet sheet, Map<Integer, int[]> mergeMap, int startRow,
|
|
|
|
int endRow) {
|
|
|
|
Map<Integer, MergeEntity> mergeDataMap = new HashMap<Integer, MergeEntity>();
|
|
|
|
if (mergeMap.size() == 0) {
|
|
|
|
return;
|
|
|
@@ -38,11 +51,11 @@ public final class PoiMergeCellUtil { |
|
|
|
Row row;
|
|
|
|
Set<Integer> sets = mergeMap.keySet();
|
|
|
|
String text;
|
|
|
|
for (int i = startRow; i <= sheet.getLastRowNum(); i++) {
|
|
|
|
for (int i = startRow; i <= endRow; i++) {
|
|
|
|
row = sheet.getRow(i);
|
|
|
|
for (Integer index : sets) {
|
|
|
|
if (row.getCell(index) == null) {
|
|
|
|
mergeDataMap.get(index).setEndRow(i);
|
|
|
|
if (row == null || row.getCell(index) == null) {
|
|
|
|
mergeDataMap.get(index).setEndRow(i - 1);
|
|
|
|
} else {
|
|
|
|
text = row.getCell(index).getStringCellValue();
|
|
|
|
if (StringUtils.isNotEmpty(text)) {
|
|
|
|