欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-13 15:22:40
...
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;
    }



上一篇: 个人的工具类

下一篇: 数字颠倒