运用poi来对单元格进行格式转换的方法

1 篇文章 0 订阅
	public static String getCellValue(HSSFCell hssfCell){
	      if(hssfCell.getCellType() == hssfCell.CELL_TYPE_BOOLEAN){
	          return String.valueOf(hssfCell.getBooleanCellValue());  
	      }else if(hssfCell.getCellType() == hssfCell.CELL_TYPE_NUMERIC){
	          if(HSSFDateUtil.isCellDateFormatted(hssfCell)){
	              Date d = hssfCell.getDateCellValue();
	              SimpleDateFormat simpl = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	              String st = simpl.format(d);
	              if(st.endsWith(" 00:00:00")) st = st.replace(" 00:00:00", "");
	              return st;
	          }
	          if(hssfCell.getCellStyle().getDataFormat() == 177){//当EXCEL设置为日期格式(年月)时,上面判断无法生效,此特殊处理.
	              Date d = hssfCell.getDateCellValue();
	              SimpleDateFormat simpl = new SimpleDateFormat("yyyy年MM月");
	              String st = simpl.format(d);
	              if(st.endsWith(" 00:00:00")) st = st.replace(" 00:00:00", "");
	              return st;
	          }
	          double vl = hssfCell.getNumericCellValue();
	          if(String.valueOf(vl).endsWith(".0")){
	              return String.valueOf(vl).replace(".0", "");
	          }
	          return String.valueOf(hssfCell.getNumericCellValue());
	      }else if(hssfCell.getCellType() == hssfCell.CELL_TYPE_FORMULA){ //公式
	          try{
	              if(HSSFDateUtil.isCellDateFormatted(hssfCell)){
	                  Date d = hssfCell.getDateCellValue();
	                  SimpleDateFormat simpl = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	                  String st = simpl.format(d);
	                  if(st.endsWith(" 00:00:00")) st = st.replace(" 00:00:00", "");
	                  return st;
	              }
	              return String.valueOf(hssfCell.getNumericCellValue());
	          }catch(IllegalStateException e){
	              try{
	                double vl = hssfCell.getNumericCellValue();
	                if(String.valueOf(vl).endsWith(".0")){
	                    return String.valueOf(vl).replace(".0", "");
	                }
	                return String.valueOf(hssfCell.getNumericCellValue());
	              }catch(IllegalStateException el){
	                  try{
	                      return String.valueOf(hssfCell.getRichStringCellValue());
	                  }catch(IllegalStateException ell){
	                      return String.valueOf(hssfCell.getBooleanCellValue());
	                  }
	              }
	          }
	      }else{  
	          return String.valueOf(hssfCell.getStringCellValue());
	      }  
	    }

同事给的,先留着备用。用于解决从excel表获取时间数据时由于格式而出现的问题,例如2015/6/1,持久化到数据库后变成0015……

用DateUtil.formatDate(tbPayRentTemp.getEndDate(), DateUtil.YYYYMMFORMAT)来获取时间要求格式是2015-11-26,且单元格格式为文本,可以获取到正确的数据,但格式要求较严格。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值