/**
* 获取单元格的值
*/privatestaticStringgetCellValue(Cell cell){String ret ="";try{// 判断cell是否为空,以免使用cell调用时出现空指针if(cell ==null){
ret ="";}elseif(cell.getCellTypeEnum()==CellType.STRING){
ret = cell.getStringCellValue();// 单元格类型为数值类型}elseif(cell.getCellTypeEnum()==CellType.NUMERIC){// 判断单元格类型为时间类型if(HSSFDateUtil.isCellDateFormatted(cell)){Date date = cell.getDateCellValue();// 调整成我们需要的时间格式
ret =DateFormatUtils.format(date,"yyyy-MM-dd HH:mm:ss");// 小数的判断}else{// 将小数转换成string类型,可以直接进行操作
ret =NumberToTextConverter.toText(cell.getNumericCellValue());// 获取小数点后的部分String temp = ret.substring(ret.indexOf(".")+1, ret.length());try{// 如果是小数部分为零,只取整数部分if(Integer.parseInt(temp)==0){
ret = ret.substring(0, ret.indexOf("."));}}catch(Exception ex){}}}// 有公式的Excel单元格elseif(cell.getCellTypeEnum()==CellType.FORMULA){// 这样对于字符串cell.getStringCellValue()方法即可取得其值,如果公式生成的是数值,使用cell.getStringCellValue()方法会抛出IllegalStateException异常,在异常处理中使用cell.getNumericCellValue();即可。try{
ret =String.valueOf(cell.getStringCellValue());}catch(IllegalStateException e){
ret =String.valueOf(cell.getNumericCellValue());}}// 错误elseif(cell.getCellTypeEnum()==CellType.ERROR){
ret =""+ cell.getErrorCellValue();}// 布尔类型elseif(cell.getCellTypeEnum()==CellType.BOOLEAN){
ret =""+ cell.getBooleanCellValue();}// 空值elseif(cell.getCellTypeEnum()==CellType.BLANK){
ret ="";}}catch(Exception ex){
ex.printStackTrace();
ret ="";}return ret;}