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类来进行转换,但是我同事说。在转换的过程中有时候会出错。
所以希望了解的朋友给个上上策给我啊。。。。