POI合并单元格并填入数据

利用POI合并单元格其实也是一个很简单的事情,就两行代码

CellRangeAddress region = new CellRangeAddress(firstRow, lastRow, firstCol, lastCol); //初始行,终止行,初始列,终止列
sheet.addMergedRegion(region);

合并单元格并不需要什么,只需要你指定工作表sheet。然后CellRangeAddress()方法的四个参数分别是合并的初始行,终止行,初始列,终止列。而且合并单元格的时候,合并后的单元格里面的内容只会保存左上角的第一个单元格的内容。

下面我举个栗子,相信你们就会懂了。

String path = "D:\\test0808\\";
        //1.创建工作簿
        Workbook workbook = new HSSFWorkbook();
        //2.创建一个工作表
        Sheet sheet = workbook.createSheet("博客园测试");
        //3.创建一行
        Row row1 = sheet.createRow(0);
        //4.创建两个个单元格
        Cell cell = row1.createCell(0);
        Cell cell2 = row1.createCell(1);
        cell.setCellValue("第一个单元格");
        cell2.setCellValue("第二个单元格");
        
        FileOutputStream fileOutputStream = new FileOutputStream(path + "在家测试0802.xls");
       // fileOutputStream.flush();
        workbook.write(fileOutputStream);
        fileOutputStream.flush();
        fileOutputStream.close();
        System.out.println("测试成功");
}

创建的Excel文件如下

 

 

如果我对两个单元格进行合并,那么内容只会保留“第一个单元格”字样。

 

需要注意的是,合并单元格指定的总单元格必须大于一。也就是初始行,终止行和行差必须大于一,当初始列,终止列是用一列时。相反,初始列,终止列的列差必须大于一,当初始行,终止行是同一行时。但是有些版本就可以支持合并一个单元格,因为我在公司用的版本跟我在家的不一样,我家里的版本就能够支持合并单个单元格,这里小编就不多举例了,大家用的时候看报错信息就能够知道了。

这里做一个补充,像小编我在工作的时候就遇到一个问题,我合并单元格之后需要将数据填入信息,这时正如同上面说到的,“合并后的单元格里面的内容只会保存左上角的第一个单元格的内容”,所以我们填数据时,就应该将数据填到第一个单元格。此时我们需要用到getRow()和getCell()方法拿到第一个单元格,并写入数据.但是getCell和getRow()如果当单元格和row不存在时,会报空指针异常,所以我们一般用createCell()代替getCell().此时也是需要用sheet(工作表)才能调用getRow()方法.sheet.getRow(firstRow);

//拿到单元格,把数值放到第一列
Row mergeRow = sheet.getRow(firstRow);
Cell mergeCell = mergeRow.createCell(writeSumCol);
mergeCell.setCellValue(sumRent);

 

posted @ 2020-08-08 10:31  拿着放大镜看世界  阅读(5080)  评论(2编辑  收藏  举报