/**
* insertSave导入数据处理,数据转成Map<Integer, Object>,放在List<Map<Integer, Object>>中
*
* @param sheet
*/
private List<Map<Integer, Object>> insertSave(Sheet sheet,Model m) {
int i;
List<Map<Integer, Object>> delforList = new ArrayList<>();
for (i = 2; i < sheet.getLastRowNum() + 1; i++) {// 数据记录从第三行开始
Row row = sheet.getRow(i);
if(null == row) {
return delforList;
}
Map<Integer, Object> map = new HashMap<Integer, Object>();
// row.getLastCellNum()由于是获取最后一个有值的列个数,不需要这个方案,这里固定截止到下标为21列
for (int j = 0; j < 22; j++) {
Cell c = row.getCell(j);
if (null != c) {
switch (c.getCellTypeEnum()) {
case _NONE:
case BLANK:
map.put(j,"");
break;
case BOOLEAN:
map.put(j, c.getBooleanCellValue());
break;
case ERROR:
map.put(j, c.getErrorCellValue());
break;
case FORMULA:
map.put(j, c.getCellFormula());
break;
case NUMERIC:
Object value = null;
if (HSSFDateUtil.isCellDateFormatted(c)) {// 时间类型
Date date = c.getDateCellValue();
if (j == 15) {
value = DateFormatUtils.format(date, "yyyy-MM-dd HH:mm:ss");
map.put(j, value);
break;
}
value = DateFormatUtils.format(date, YYYY_MM_DD);
map.put(j, value);
} else {// 数值类型
value = c.getNumericCellValue();
DecimalFormat df = new DecimalFormat(_0);
value = df.format(value);
map.put(j, value);
}
break;
default:
if (StringUtils.isNotBlank(c.getStringCellValue())) {
map.put(j, c.getStringCellValue());
}else {
map.put(j,"");
}
break;
}
}else {
map.put(j,"");
}
}
// 关键字段都为空的,结束遍历
if (StringUtils.isEmpty(map.get(2).toString()) && StringUtils.isEmpty(map.get(4).toString())
&& StringUtils.isEmpty(map.get(5).toString()) && StringUtils.isEmpty(map.get(6).toString())
&& StringUtils.isEmpty(map.get(8).toString()) && StringUtils.isEmpty(map.get(21).toString())) {
int num = i + 1;
m.addAttribute("sourse", StringUtils.join("数据读取截止于", num, "行:六个关键字段都为空或者该行无数据"));
return delforList;
}
delforList.add(map);
}
return delforList;
}