|
|
@@ -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 ""; |
|
|
|
} |
|
|
|
} |