/** * 判断指定的单元格是否是合并单元格 * @return */ public static boolean isMergedRegion(XSSFSheet sheet, int row, int column) { int sheetMergeCount = sheet.getNumMergedRegions(); for (int i = 0; i < sheetMergeCount; i++) { CellRangeAddress range = sheet.getMergedRegion(i); int firstColumn = range.getFirstColumn(); int lastColumn = range.getLastColumn(); int firstRow = range.getFirstRow(); int lastRow = range.getLastRow(); if (row >= firstRow && row <= lastRow) { if (column >= firstColumn && column <= lastColumn) { return true; } } } return false; }
/** * 获取合并单元格的值 */ public Integer getMergedRegionValue(XSSFSheet xssfSheet, int row, int column) { int sheetMergeCount = xssfSheet.getNumMergedRegions(); XSSFCell fCell = null; //合并单元格取值 if(isMergedRegion(xssfSheet,row,column)){ for (int i = 0; i < sheetMergeCount; i++) { CellRangeAddress ca = xssfSheet.getMergedRegion(i); int firstColumn = ca.getFirstColumn(); int lastColumn = ca.getLastColumn(); int firstRow = ca.getFirstRow(); int lastRow = ca.getLastRow(); if (row >= firstRow && row <= lastRow) { if (column >= firstColumn && column <= lastColumn) { XSSFRow fRow = xssfSheet.getRow(firstRow); fCell = fRow.getCell(firstColumn); } } } }else{ //非合并单元格 fCell = xssfSheet.getRow(row).getCell(column); } return this.getCellVal(fCell); }
/** * 单元格数据类型不确定,统一单元格以String方式取值 * @param cell * @return */ public String getCellVal(XSSFCell cell){ String cellVal = ""; if(cell!=null){ //设置单元格类型 cell.setCellType(Cell.CELL_TYPE_STRING); cellVal = cell.getStringCellValue().trim(); } return cellVal; }