POI 单元格垂直居中,相同内容的单元格合并

XSSFCellStyle cellStyle = wb.createCellStyle(); 
cellStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER); // 居中
cellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);//垂直


			int currnetRow = 5;//开始查找的行
			for (int p = 5; p < totalRow; p++) {//totalRow 总行数
				XSSFCell currentCell = sheet.getRow(p).getCell(0);
				String current = getStringCellValue(currentCell);
				log.info(" current = "+current);
				XSSFCell nextCell = null;
				String next = "";
				if(p < totalRow+1){
					XSSFRow nowRow = sheet.getRow(p+1);
					if(nowRow != null){
						nextCell = nowRow.getCell(0);
						next = getStringCellValue(nextCell);
					}else{
						next = "";
					}
					
				}else{
					next = "";
				}
				log.info(" next = "+next);
				if(current.equals(next)){//比对是否相同
					currentCell.setCellValue("");
					continue;
				}
				else{
					sheet.addMergedRegion(new CellRangeAddress(currnetRow, p, 0, 0));//合并单元格
					XSSFCell nowCell = sheet.getRow(currnetRow).getCell(0);
					nowCell.setCellValue(current);
					nowCell.setCellStyle(cellStyle);
					currnetRow = p + 1;
				}
			}
private String getStringCellValue(XSSFCell cell) {
		String strCell = "";
		if (cell != null) {
			switch (cell.getCellType()) {
			case XSSFCell.CELL_TYPE_STRING:
				strCell = cell.getStringCellValue();
				break;
			case XSSFCell.CELL_TYPE_NUMERIC:
				strCell = String.valueOf(cell.getNumericCellValue());
				break;
			case XSSFCell.CELL_TYPE_BOOLEAN:
				strCell = String.valueOf(cell.getBooleanCellValue());
				break;
			case XSSFCell.CELL_TYPE_BLANK:
				strCell = "";
				break;
			default:
				strCell = "";
				break;
			}
			if (strCell.equals("") || strCell == null) {
				return "";
			}
			if (cell == null) {
				return "";
			}
		}
		return strCell;
    }



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值