使用java实现合并Excel表格中指定列中相同的行

                **使用java实现合并Excel表格中指定列中相同的行**

1、话不多说,先上代码

    public static void main(String[] args) throws IOException, 
    InvalidFormatException {
    File file=new File("C:\\Users\\MrYan\\Desktop\\测试.xlsx");
    Workbook workbook=WorkbookFactory.create(new FileInputStream(file));
    Sheet sheet=workbook.getSheetAt(0);
    int rows=getActualRowNum(sheet);
    //合并起始行初始单元格内容
    String firstValue=sheet.getRow(0).getCell(0).getStringCellValue();
    //合并起始行初始值
    int firstRow=0;
    int num=1;
    for(int i=0;i<rows;i++){
        Row row=sheet.getRow(i);
        Cell cell=row.getCell(0);
        if(!cell.getStringCellValue().equals(firstValue)){
           
    //单元格不相同时进行合并
    //例如从第0行开始得到一个初始值,然后读取到第十行时内容变了,那么合并的截至行就是第十行减去一行,就是从第0行合并至第九行
    sheet.addMergedRegion(new CellRangeAddress(firstRow, i-1, 0, 0));
    System.err.println("第"+num+"次合并,从第"+firstRow+"至第"+(i-1)+"行");
    //单元格内容不相同时重新赋值合同单元格的初始内容
    firstValue=cell.getStringCellValue();
    //单元格内容不相同时重新赋值合并的初始行
    firstRow=i;
    num++;
        }
    }
   
    //在合并最后一组相同的单元格内容时由于读取到最大行也没有出现不相同的单元格内容,所有需要再此处进行合并一下最后一组相同的单元格
    //起始行就是上一组的截至行,而截至行就是读取到的行数减去1(因为下标从0开始)   
    sheet.addMergedRegion(new CellRangeAddress(firstRow, rows-1, 0, 0));
    System.err.println("最后一次合并,从第"+firstRow+"至第"+(rows-1)+"行");
    FileOutputStream fileOutputStream=new FileOutputStream(file);
    workbook.write(fileOutputStream);
    fileOutputStream.close();
}

2、新建个测试的Excel并填入测试内容
在这里插入图片描述
3、执行结果
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值