| @@ -0,0 +1,128 @@ | |||||
| /** | |||||
| * | |||||
| */ | |||||
| package org.jeecgframework.poi.util; | |||||
| import org.apache.poi.ss.usermodel.Cell; | |||||
| import org.apache.poi.ss.usermodel.Row; | |||||
| import org.apache.poi.ss.usermodel.Sheet; | |||||
| import org.apache.poi.ss.util.CellRangeAddress; | |||||
| /** | |||||
| * @author xfworld | |||||
| * @since 2015-12-28 | |||||
| * @version 1.0 | |||||
| * @see org.jeecgframework.poi.util.PoiCellUtil | |||||
| * 获取单元格的值 | |||||
| */ | |||||
| public class PoiCellUtil | |||||
| { | |||||
| /** | |||||
| * 读取单元格的值 | |||||
| * @param sheet | |||||
| * @param row | |||||
| * @param column | |||||
| * @return | |||||
| */ | |||||
| public static String getCellValue(Sheet sheet ,int row , int column) | |||||
| { | |||||
| String value=null; | |||||
| if(isMergedRegion(sheet ,row ,column)){ | |||||
| value=getMergedRegionValue(sheet ,row ,column); | |||||
| }else{ | |||||
| Row rowData=sheet.getRow(row); | |||||
| Cell cell=rowData.getCell(column); | |||||
| value=getCellValue(cell); | |||||
| } | |||||
| return value; | |||||
| } | |||||
| /** | |||||
| * 获取合并单元格的值 | |||||
| * @param sheet | |||||
| * @param row | |||||
| * @param column | |||||
| * @return | |||||
| */ | |||||
| public static String getMergedRegionValue(Sheet sheet ,int row , int column){ | |||||
| int sheetMergeCount = sheet.getNumMergedRegions(); | |||||
| for(int i = 0 ; i < sheetMergeCount ; i++){ | |||||
| CellRangeAddress ca = sheet.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){ | |||||
| Row fRow = sheet.getRow(firstRow); | |||||
| Cell fCell = fRow.getCell(firstColumn); | |||||
| return getCellValue(fCell) ; | |||||
| } | |||||
| } | |||||
| } | |||||
| return null ; | |||||
| } | |||||
| /** | |||||
| * 判断指定的单元格是否是合并单元格 | |||||
| * @param sheet | |||||
| * @param row | |||||
| * @param column | |||||
| * @return | |||||
| */ | |||||
| public static boolean isMergedRegion(Sheet sheet , int row , int column){ | |||||
| int sheetMergeCount = sheet.getNumMergedRegions(); | |||||
| for(int i = 0 ; i < sheetMergeCount ; i++ ){ | |||||
| CellRangeAddress ca = sheet.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){ | |||||
| return true ; | |||||
| } | |||||
| } | |||||
| } | |||||
| return false ; | |||||
| } | |||||
| /** | |||||
| * 获取单元格的值 | |||||
| * @param cell | |||||
| * @return | |||||
| */ | |||||
| public static String getCellValue(Cell cell){ | |||||
| if(cell == null) return ""; | |||||
| if(cell.getCellType() == Cell.CELL_TYPE_STRING){ | |||||
| return cell.getStringCellValue(); | |||||
| }else if(cell.getCellType() == Cell.CELL_TYPE_BOOLEAN){ | |||||
| return String.valueOf(cell.getBooleanCellValue()); | |||||
| }else if(cell.getCellType() == Cell.CELL_TYPE_FORMULA){ | |||||
| return cell.getCellFormula() ; | |||||
| }else if(cell.getCellType() == Cell.CELL_TYPE_NUMERIC){ | |||||
| return String.valueOf(cell.getNumericCellValue()); | |||||
| } | |||||
| return ""; | |||||
| } | |||||
| } | |||||