java导入excel的时候为什么会有索引越界的问题
♛笃默 2019-03-26 03:15:06 java.lang.IndexOutOfBoundsException: Index: 6, Size: 6
at java.util.LinkedList.entry(LinkedList.java:365)
at java.util.LinkedList.get(LinkedList.java:315)
下面是代码
exceluitl工具类
List<List<Object>> lists = new LinkedList<List<Object>>();
for (int i = 0; i < wb.getNumberOfSheets(); i++) {
Sheet sheet = wb.getSheetAt(i);
for (int r = sheet.getFirstRowNum(); r < sheet.getFirstRowNum() + sheet.getPhysicalNumberOfRows(); r++) {
Row row = sheet.getRow(r);
List<Object> values = new LinkedList<Object>();
for (int c = row.getFirstCellNum(); c < row.getPhysicalNumberOfCells() + row.getFirstCellNum(); c++) {
Cell cell = row.getCell(c);
switch (cell.getCellType()) {
case Cell.CELL_TYPE_STRING:
System.out.println(cell.getStringCellValue());
values.add(cell.getStringCellValue());
break;
case Cell.CELL_TYPE_NUMERIC:
System.out.println(cell.getNumericCellValue());
values.add(cell.getNumericCellValue());
break;
case Cell.CELL_TYPE_BOOLEAN:
System.out.println(cell.getBooleanCellValue());
values.add(cell.getBooleanCellValue());
break;
case Cell.CELL_TYPE_BLANK:
System.out.println(cell.getStringCellValue());
values.add(cell.getStringCellValue());
break;
case Cell.CELL_TYPE_ERROR:
System.out.println(cell.getErrorCellValue());
values.add(cell.getErrorCellValue());
break;
case Cell.CELL_TYPE_FORMULA:
System.out.println(cell.getStringCellValue());
values.add(cell.getStringCellValue());
break;
}
}
lists.add(values);
}
}
return lists;
}
}
导入的action
List<List<Object>> list = ExcelUtils.readXlsx(file.getInputStream(), file.getFileName());
//跳过第一行标题
for (int i = 1; i < list.size(); i++) {
List<Object> values = list.get(i);
Object val;
ResumeResult result = new ResumeResult();
result.setId(UUID.randomUUID().toString());//uuid
result.setUserName(values.get(1).toString());
val = values.get(2);
if(val instanceof Number) {
result.setIdCard(String.valueOf(((Number) val).longValue()));
} else {
result.setIdCard(val.toString());
}
result.setSchool(values.get(3).toString());
result.setPostName(values.get(4).toString());
result.setResult(values.get(5).toString());
result.setAddTime(new Date());//当前时间
val = values.get(6);
if(val instanceof Number) {
result.setStatus(String.valueOf(((Number)val).longValue()));
} else {
result.setStatus(val.toString());
}
resumeresultser.insertResumeResult(result);