优米格
分享有营养的

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

BraUndress.png

环境:

  • 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);

合并前:

beforeMerge.jpg

合并后:

afterMerge.jpg

赞(0)
未经允许禁止转载:优米格 » Java使用Apache POI合并Excel连续相同内容的单元格

评论 抢沙发

合作&反馈&投稿

商务合作、问题反馈、投稿,欢迎联系

广告合作侵权联系