当前位置: 代码迷 >> 综合 >> POI 分组合并单元格
  详细解决方案

POI 分组合并单元格

热度:19   发布时间:2024-01-21 13:57:38.0
/*** 合并单元格* @param sheet 要合并单元格的excel 的sheet* @param cellLine要合并的列* @param startRow 要合并列的开始行* @param endRow要合并列的结束行*/private static void addMergedRegion(XSSFSheet sheet, int cellLine,int startRow, int endRow, XSSFWorkbook workbook) {XSSFCellStyle style = workbook.createCellStyle(); // 样式对象style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 垂直style.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 水平// 获取第一行的数据,以便后面进行比较String s_will = sheet.getRow(startRow).getCell(cellLine).getStringCellValue();int count = 0;boolean flag = false;for (int i = 1; i <= endRow; i++) {String s_current = sheet.getRow(i).getCell(0).getStringCellValue();if (s_will.equals(s_current)) {s_will = s_current;if (flag) {sheet.addMergedRegion(new CellRangeAddress(	startRow - count, startRow, cellLine, cellLine));XSSFRow row = sheet.getRow(startRow - count);String cellValueTemp = sheet.getRow(startRow - count).getCell(0).getStringCellValue();XSSFCell cell = row.createCell(0);cell.setCellValue(cellValueTemp); // 跨单元格显示的数据cell.setCellStyle(style); // 样式count = 0;flag = false;}startRow = i;count++;} else {flag = true;s_will = s_current;}if (i == endRow && count > 0) {sheet.addMergedRegion(new CellRangeAddress(endRow - count,endRow, cellLine, cellLine));String cellValueTemp = sheet.getRow(startRow - count).getCell(0).getStringCellValue();XSSFRow row = sheet.getRow(startRow - count);XSSFCell cell = row.createCell(0);cell.setCellValue(cellValueTemp); // 跨单元格显示的数据cell.setCellStyle(style); // 样式}}}

 

 

  相关解决方案