POI excel 파일 가져오기 문제

4931 단어 F#ExcelJ#mobile
	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 클래스를 사용하여 변환합니다. 하지만 제 동료가 말했습니다.전환하는 과정에서 때때로 오류가 발생할 수 있다.
그러니까 아는 친구가 상책을 줬으면 좋겠어...

좋은 웹페이지 즐겨찾기