POI 导入excel文件问题

	public int importExcel(String filename,Department dep) {
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
		File f = new File(filename);
		FileInputStream is;
		int count = 0;
		try {
			is = new FileInputStream(new File(filename));
			HSSFWorkbook wb = new HSSFWorkbook(is);
			int sheetNum = wb.getNumberOfSheets();
			for (int i = 0; i < sheetNum; i++) {
				HSSFSheet childSheet = wb.getSheetAt(i);
				int rowNum = childSheet.getLastRowNum();
				if (rowNum > 0) {
					for (int j = 1; j <= rowNum; j++) {
						for (int k = 0; k < 1; k++) {
						Employee emp=new Employee();
							HSSFCell b = childSheet.getRow(j).getCell(
									(short) (k+0));//No
							if (b != null) {
								emp.setNo(b.toString());
							} else {
								count++;
								continue;
							}

							b = childSheet.getRow(j).getCell((short) (k+1));// Name
							if (b != null) {
								emp.setName(b.toString());
							} else {
								count++;
								continue;
							}

							b = childSheet.getRow(j).getCell((short) (k+2));// Birthday
							if (b != null) {
								try{
								Date  date=sdf.parse(b.toString());
								if(date!=null){
								emp.setBirthday(date);
								}else{
									count++;
									continue;
								}
								}catch(Exception e){
									count++;
									continue;
								}
							} else {
								count++;
								continue;
							}

							b = childSheet.getRow(j).getCell((short) (k+3));// CardType
							if (b != null) {
								emp.setCardType(b.toString());
							} else {
								emp.setCardType("");
							}

							b = childSheet.getRow(j).getCell((short) (k+4));// CardNO
							if (b != null) {
								emp.setCardNo(b.toString());
							} else {
								emp.setCardNo("");
							}
							b = childSheet.getRow(j).getCell((short) (k+5)); //Sex
							if (b != null&&!"".equals(b.toString().trim())) {
								if(b.toString().equals("男")){
									emp.setSex(SexEnum.Man.getValue());
								}else if(b.toString().equals("女")){
									emp.setSex(SexEnum.Woman.getValue());
								}else{
									emp.setSex(SexEnum.Unknow.getValue());
								}
							} else {
								emp.setSex(0);
							}
							b = childSheet.getRow(j).getCell((short) (k+6));// Telַ
							if (b != null) {
								emp.setTel(b.toString());
							} else {
								emp.setTel("");
							}

							b = childSheet.getRow(j).getCell((short) (k+7));//Mobile
							if (b != null) {
								emp.setMobile(b.toString());
							} else {
								count++;
								continue;
							}
							if(emp.getNo()!=null&&!"".equals(emp.getNo().trim())){
								if(this.isHasNo(emp.getNo())){
									count++;
									continue;
								}
							}else{
								count++;
								continue;
							}
							emp.setDepartment(dep.getUid());
							emp.setExpertType("");
							emp.setStatex(EmployeeStateEnum.Normal.getValue());
							emp.setUser(GeneralUtil.getLoginUser().getUid());
							
							ServiceUtil.getInstance().getEmployeeService().create(emp);
							}
						}
					
					}
				}

			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} 
		return count;

	}

 

由于我做的是管理系统所以经常会导入手机号码,但是导入的时候我发现,手机号码变成科学计数法形式了,像1.3556859658E10。我现在用到解决方法有三种:

第一种:下策

定义个函数,判断是否是科学计数法的形式,然后截取字符串。。。拼接成手机号码。。这样虽然能实现。但是太死了。。。

第二种:中策

后来我想到也有可能是excel的问题,我在excel中设置格式为文本格式,还是不行,郁闷啊。。偶然之间发现。。如果你先输入数据再设置格式,没有作用,但是你新建excel后立即设置为文本格式,在输入数据的话,OK,一切正常。。这个方法虽然比第一个好点。但是感觉还是不方便。。

第三种:还是中策

String mobile="";
b = childSheet.getRow(j).getCell((short) (k+3));// Mobile
if (b != null) {
	if(b.toString().indexOf(".")!= -1&&b.toString().indexOf("E")!= -1){
		DecimalFormat df=new DecimalFormat();
		mobile= df.parseObject(b.toString()).toString();
	}else{
		mobile=b.toString();
	}
       } else {
	continue;
}

 使用DecimalFormat类来进行转换,但是我同事说。在转换的过程中有时候会出错。

所以希望了解的朋友给个上上策给我啊。。。。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值