java导出excel合并单元格(行合并)

这段代码展示了如何使用ApachePOI库在Java中处理Excel文件。它读取指定路径的xlsx文件,遍历工作表中的单元格,当遇到内容改变时,合并相同内容的单元格。程序最后将更新的工作簿写回原文件。
摘要由CSDN通过智能技术生成
public static void main(String[] args) throws IOException,
        InvalidFormatException {
    File file=new File("E:\\\\20230609155818.xlsx");
    Workbook workbook=WorkbookFactory.create(new FileInputStream(file));
    Sheet sheet=workbook.getSheetAt(0);
    int rows=50;
    //合并起始行初始单元格内容
    String firstValue=sheet.getRow(2).getCell(0).getStringCellValue();
    //合并起始行初始值
    int firstRow=2;
    int num=1;
    for(int i=2;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();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值