1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > java excel相同的合并_Java使用Apache POI合并Excel连续相同内容的单元格

java excel相同的合并_Java使用Apache POI合并Excel连续相同内容的单元格

时间:2023-09-04 18:27:25

相关推荐

java excel相同的合并_Java使用Apache POI合并Excel连续相同内容的单元格

环境:

Apache POI 3.17;

HSSFSheet;

目的:

对Excel表格中同一列,如果连续的两个或两个以上单元格的内容相同,则对这些单元格进行合并。

实现代码:

/**

* 合并指定Excel sheet页、指定列中连续相同内容的单元格

*

* @param sheet Excel sheet

* @param column 指定列

*/

public static void mergeSpecifiedColumn(HSSFSheet sheet, int column) {

int totalRows = sheet.getLastRowNum(), firstRow = 0, lastRow = 0;

boolean isLastCompareSame = false;//上一次比较是否相同

//这里第一行是表头,从第三行开始判断是否相同

if (totalRows >= 2) {

for (int i = 2; i <= totalRows; i++) {

String lastRowCellContent = sheet.getRow(i - 1).getCell(column).getStringCellValue();

String curRowCellContent = sheet.getRow(i).getCell(column).getStringCellValue();

if (curRowCellContent.equals(lastRowCellContent)) {

if (!isLastCompareSame) {

firstRow = i - 1;

}

lastRow = i;

isLastCompareSame = true;

} else {

isLastCompareSame = false;

if (lastRow > firstRow) {

sheet.addMergedRegion(new CellRangeAddress(firstRow, lastRow, column, column));

}

}

//最后一行时判断是否有需要合并的行

if ((i == totalRows) && (lastRow > firstRow)) {

sheet.addMergedRegion(new CellRangeAddress(firstRow, lastRow, column, column));

}

}

}

}

方法调用:

//合并单元格

SrItemsUtil.mergeSpecifiedColumn(sheet, 0);

SrItemsUtil.mergeSpecifiedColumn(sheet, 1);

合并前:

合并后:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。