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

realnode.png vps-under-title.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连续相同内容的单元格

评论 抢沙发

合作&反馈&投稿

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

广告合作侵权联系

登录

找回密码

注册

Ads Blocker Image Powered by Code Help Pro

检测到广告已被屏蔽

尊敬的优米格用户,

您好,系统检测到您使用了广告屏蔽组件。本网站并不包含任何侵入性广告,如果本站能给您一点帮助,还请将本站加入拦截白名单,这是我们仅有的收入来源!

网站的持续运作和改进,需要您的慷概帮助,感谢您的支持。

此致,
优米格 团队