现有需求是将A列这一列中相同数据的列进行上下合并;代码如下
// //相同的凭证号合并
int x = 2;//设置初始行号
for (int z = 2;z <= sheet.getLastRowNum();z++){
if (!sheet.getRow(x).getCell(0).getStringCellValue().equals(sheet.getRow(z).getCell(0).getStringCellValue())){//如果数据不相同,则合并到上一行
sheet.addMergedRegion(new CellRangeAddress(x,z-1,0,0));合并单元格,参数依次为起始行,结束行,起始列,结束列 (索引0开始)
x = z;
}
//判断是否是最后一行,是的话将前面与最后一行相同数据的列合并
if (z == sheet.getLastRowNum()){
sheet.addMergedRegion(new CellRangeAddress(x,z,0,0));合并单元格,参数依次为起始行,结束行,起始列,结束列 (索引0开始)
}
}
由于我是poi中的行和列都是从零开始计算的,因此如果要合并A列中相同的数据,则行应该从第2行开始,列就是第0列,如果不确定,可以将getRow(行号).getCell(列号).getStringCellValue()打印处理。
效果如下
可以看到相同数据的已经进行合并了