java.util.ConcurrentModificationException 异常
最近做个项目,完成数据导入功能,使用apache下的poi解析excel表格,代码如下:
Workbook wb = null;
if (fu == null) {
throw new Exception("文件不能为空!");
}
if (fu.getClientFileName().endsWith(".xlsx")) {
wb = new XSSFWorkbook(fu.getInputStream());
} else {
if (fu.getClientFileName().endsWith(".xls")) {
wb = new HSSFWorkbook(fu.getInputStream());
} else {
throw new Exception("导入文件类型错误,不是excel文件:"
+ fu.getClientFileName());
}
}
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
// Sheet sheet = wb.getSheetAt(0);
int sheetNum = wb.getNumberOfSheets();
for (int j = 0; j < sheetNum; j++) {
Sheet sheet = wb.getSheetAt(j);
Iterator<Row> rit = sheet.rowIterator();
if (rit.hasNext()) { // 忽视第一行
rit.next();
}
rowLoop: while (rit.hasNext()) {
Map<String, Object> map = new HashMap<String, Object>();
Row row = rit.next();
for (int i = 0; i < fields.length; i++) {
Cell cell = row.getCell(i);
if (cell != null) {
cell.setCellType(Cell.CELL_TYPE_STRING);
String val = cell.getStringCellValue();
if (val != null) {
map.put(fields[i].name, val.trim());
}
} else {
// 第一列为空,则忽视该行
if (i == 0) {
continue rowLoop;
}
}
}
list.add(map);
}
后台抛出异常:java.util.ConcurrentModificationException
哪位遇到过这种情况,麻烦帮忙修改下上面代码,感谢!