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 클래스를 사용하여 변환합니다. 하지만 제 동료가 말했습니다.전환하는 과정에서 때때로 오류가 발생할 수 있다.
그러니까 아는 친구가 상책을 줬으면 좋겠어...
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
F#에서 Android 앱 개발 카운터(수취기)편F#에서 Android 앱 개발로서 카운터(수취기)의 작성 방법을 소개합니다. F#에서 Android 앱 개발의 기본은 다음 기사를 참조하십시오. 솔루션 탐색기의 Resources\layout\Main.axml을 열...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.