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);
...全文
192 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
♛笃默 2019-03-26
  • 打赏
  • 举报
回复
这是数据库语句 public boolean insertResumeResult(ResumeResult resumeResult) { boolean result = false; String sql ="insert into resume_result2 (id,userName,idCard,school,postName,result,addTime,status)values(uuid(),?,?,?,?,?,now(),?)"; Object[] obj = {resumeResult.getId(),resumeResult.getUserName(),resumeResult.getIdCard(),resumeResult.getSchool(),resumeResult.getPostName(),resumeResult.getResult(),resumeResult.getStatus()}; try { super.getJdbcTemplate().update(sql,obj); result = true; } catch (DataAccessException e) { e.printStackTrace(); } return result; }

50,545

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧