java poi导入excel格式转换

/**
	 * excel文本转换
	 * @param cell
	 * @return
	 */
	public static String parseCell(Cell cell) {
    	String value = "";
		if(null==cell){
			return value;
		}
		switch (cell.getCellType()) {
		 	//数值型
	  		case Cell.CELL_TYPE_NUMERIC:
	  			if (HSSFDateUtil.isCellDateFormatted(cell)) {
	  				short format = cell.getCellStyle().getDataFormat();
	  	            SimpleDateFormat sdf = null;
	  	            if (format == 14 || format == 31 || format == 57 || format == 58  
	  	                    || (176<=format && format<=178) || (182<=format && format<=196) 
	  	                    || (210<=format && format<=213) || (208==format ) ) { // 日期
	  	                sdf = new SimpleDateFormat("yyyy-MM-dd");
	  	            } else if (format == 20 || format == 32 || format==183 || (200<=format && format<=209) ) { // 时间
	  	                sdf = new SimpleDateFormat("HH:mm");
	  	            } else { // 不是日期格式
	  	            	cell.setCellType(Cell.CELL_TYPE_STRING);
	  	            	return cell.getRichStringCellValue().toString().trim();
	  	                //return String.valueOf(cell.getNumericCellValue());这样会导致excel单元格设置为文本,但是存储数字的读取到的字符串为2.123E5之类的指数类型,所以笔者选择上面的处理方式将非日期的单元格先强制设置为文本格式,然后按照文本格式读取!
	  	            }
	  	            double cellValue = cell.getNumericCellValue();
	  	            Date date = org.apache.poi.ss.usermodel.DateUtil.getJavaDate(cellValue);
	  	            if(date == null){
	  	                return "";
	  	            }
	  	            String result="";
	  	            try {
	  	                result = sdf.format(date);
	  	            } catch (Exception e) {
	  	                e.printStackTrace();
	  	                return "";
	  	            }
	  	            return result;
	  			}else {// 纯数字
	  				BigDecimal big=new BigDecimal(cell.getNumericCellValue());
	  				value = big.toString();
	  				//解决1234.0  去掉后面的.0
	  				if(null!=value&&!"".equals(value.trim())){
	  				     String[] item = value.split("[.]");
	  				     if(1<item.length&&"0".equals(item[1])){
	  				    	 value=item[0];
	  				     }
	  				}
	  			}
	  			break;
	  			//字符串类型 
	  		case Cell.CELL_TYPE_STRING:
	  			value = cell.getStringCellValue().toString();
	  			break;
	  		// 公式类型
	  		case Cell.CELL_TYPE_FORMULA:
	  			//读公式计算值
	  			value = String.valueOf(cell.getNumericCellValue());
	  			if (value.equals("NaN")) {// 如果获取的数据值为非法值,则转换为获取字符串
	  				value = cell.getStringCellValue().toString();
	  			}
	  			break;
	  		// 布尔类型
	  		case Cell.CELL_TYPE_BOOLEAN:
	  			value = " "+ cell.getBooleanCellValue();
	  			break;
	  		// 空值
	  		case Cell.CELL_TYPE_BLANK: 
	  			value = "";
	  			break;
	  		// 故障
	  		case Cell.CELL_TYPE_ERROR: 
	  			value = "";
	  			break;
	  		default:
	  			value = cell.getStringCellValue().toString();
		}
		return value;
    }

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值