private void loadUserInfo(String str2,String filename2) {
String uploadFileFileName=str2+filename2;
Logger logger = LoggerUtil.getLoggerByName(str2);
// 读取刚才上传文件,确保路径相同
// String uploadFileFileName=str1+filename1;
System.out.println("11212" + uploadFileFileName);
// System.out.println(str1+"+"+filename1);
String directory = "/upload";
String targetDirectory = ServletActionContext.getServletContext()
.getRealPath(directory);
File target = new File(targetDirectory, uploadFileFileName);
Workbook wb = null;
try {
FileInputStream fi = new FileInputStream(target);
if (uploadFileFileName.toLowerCase().endsWith("xls")) {
wb = new HSSFWorkbook(fi);
} else if (uploadFileFileName.toLowerCase().endsWith("xlsx")) {
wb = new XSSFWorkbook(fi);
}
Sheet sheet = wb.getSheetAt(0);
int rowNum = sheet.getLastRowNum() + 1;
lists = new ArrayList<Muju>();
// i 从1开始表示第一行为标题 不包含在数据中
Muju muju = null;
for (int i = 1; i < rowNum; i++) {
muju = new Muju();
Row row = sheet.getRow(i);
int cellNum = row.getLastCellNum();
for (int j = 0; j < cellNum; j++) {
Cell cell = row.getCell(j);
String cellValue = null;
switch (cell.getCellType()) { // 判断excel单元格内容的格式,并对其进行转换,以便插入数据库
case 0:
String s = String.valueOf(cell.getNumericCellValue());
if (s.endsWith(".0")) {
cellValue = String.valueOf((int) cell
.getNumericCellValue());
} else
cellValue = String.valueOf(cell
.getNumericCellValue());
break;
case 1:
cellValue = cell.getStringCellValue();System.out.println("kanka22n="+cellValue);
break;
case 2:
cellValue = String.valueOf(cell.getDateCellValue());
break;
case 3:
System.out.println("asasas");
cellValue = "";
break;
case 4:
cellValue = String.valueOf(cell.getBooleanCellValue());
break;
case 5:
cellValue = String.valueOf(cell.getErrorCellValue());
break;
}
System.out.println("kanka33n="+cellValue);
switch (j) {// 通过列数来判断对应插如的字段
case 0:
muju.setVendor(cellValue);
break;
case 1:
muju.setItem(cellValue);
break;
case 2:
muju.setKmcishu(Integer.parseInt(cellValue));
break;
case 3:
muju.setSycishu(Integer.parseInt(cellValue));
break;
case 4:
muju.setXianelv(Double.parseDouble(cellValue));
break;
case 5:
muju.setLjcishu(Integer.parseInt(cellValue));
break;
case 6:
muju.setFqcishu(Integer.parseInt(cellValue));
break;
}
}
lists.add(muju);
}
Muju muju2 = null;
for (int f = 0; f < lists.size(); f++) {
muju2 = lists.get(f);
System.out.println(lists);
System.out.println(lists.get(f).getVendor());
System.out.println(lists.get(f).getItem());
System.out.println(lists.get(f).getKmcishu());
System.out.println(lists.get(f).getSycishu());
System.out.println(lists.get(f).getXianelv());
System.out.println(lists.get(f).getLjcishu());
System.out.println(lists.get(f).getFqcishu());
Mujudao mjd = new Mujudao();
Muju mj = mjd.itemandvendor(lists.get(f).getVendor(), lists.get(f).getItem());
System.out.println(mj);
if (mj == null) {
logger.debug(changliang.shibai1(f+1, muju2.getVendor(), muju2.getItem()));
} else {
int a = mjd.updateitemandvendor(muju2.getVendor(),
muju2.getItem(), muju2.getKmcishu(),
muju2.getSycishu(), muju2.getXianelv(),
muju2.getLjcishu(), muju2.getFqcishu());
if(a==0){
logger.debug(changliang.shibai2(f+1));
}
else
logger.debug(changliang.chenggong(f+1));
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
如果图片是上图这样,就会出错,空值以后的数据全都不会被导入(下面的代码都不执行了,也没出任何异常)
如果图片是下图这样,却能正常导入
但是,无论如何,我中间的,取空值时候的代码
System.out.println("asasas");都不会执行
求教大神这是怎么回事
Integer.parseInt(cellValue);你要先判断cellValue是空值 还是空字符串,如果是其中一种则设置为cellValue = “0”,即可,不然会出错的