From a6a0f6f8f1d25f61bb9d355090c801bb6969cf93 Mon Sep 17 00:00:00 2001 From: xfworld Date: Wed, 30 Dec 2015 14:34:08 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0Cell=E5=8F=96=E5=80=BC?= =?UTF-8?q?=E5=B7=A5=E5=85=B7=EF=BC=8C=E8=87=AA=E5=8A=A8=E5=88=86=E8=BE=A8?= =?UTF-8?q?=E5=90=88=E5=B9=B6=E5=8D=95=E5=85=83=E6=A0=BC=E5=92=8C=E7=8B=AC?= =?UTF-8?q?=E7=AB=8B=E5=8D=95=E5=85=83=E6=A0=BC=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jeecgframework/poi/util/PoiCellUtil.java | 128 ++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 easypoi-base/src/main/java/org/jeecgframework/poi/util/PoiCellUtil.java diff --git a/easypoi-base/src/main/java/org/jeecgframework/poi/util/PoiCellUtil.java b/easypoi-base/src/main/java/org/jeecgframework/poi/util/PoiCellUtil.java new file mode 100644 index 0000000..853f12e --- /dev/null +++ b/easypoi-base/src/main/java/org/jeecgframework/poi/util/PoiCellUtil.java @@ -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 ""; + } +}