public List<List<Object>> getDataList(MultipartFile file) {
// 盛放所有单元格数据的listob,每一行都是一个list,每单元格是一个object
List<List<Object>> listob = new ArrayList<List<Object>>();
try {
InputStream in = file.getInputStream();// 得到文件流
String filename = file.getOriginalFilename();// 得到文件名
Workbook work = null;
if (filename == null || filename == "") {
throw new Exception("文档不能为空!");
} else if (filename.toLowerCase().endsWith("xls")) {
work = new HSSFWorkbook(in);
} else if (filename.toLowerCase().endsWith("xlsx")) {
work = new XSSFWorkbook(in);
} else {
throw new Exception("文档格式不正确");
}
// 遍历所有工作表(sheet)
for (int i = 0; i < work.getNumberOfSheets(); i++) {
Sheet sheet = work.getSheetAt(i);
if (sheet == null) {// 处理空表
continue;
}
// 遍历工作表内所有行(row)
for (int j = sheet.getFirstRowNum() + 1; j <= sheet.getLastRowNum(); j++) {// 去掉第一行表头
Row row = sheet.getRow(j);
if (row == null) {// 处理空行
continue;
}
// 每一行创建一个小list
List<Object> list = new ArrayList<Object>();
// 遍历每行内所有单元格(cell)
for (int k = row.getFirstCellNum(); k < row.getLastCellNum(); k++) {
Cell cell = row.getCell(k);
if (cell == null) {// 处理空格子
continue;
}
// 处理单元格内容,格式化日期,格式化数字,格式化空格
Object value = null;
DecimalFormat df = new DecimalFormat("0"); // 格式化number类型的String字符
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); // 日期格式化
switch (cell.getCellType()) {
case Cell.CELL_TYPE_STRING:
value = cell.getRichStringCellValue().getString();
break;
case Cell.CELL_TYPE_NUMERIC:
if ("General".equals(cell.getCellStyle().getDataFormatString())) {
value = df.format(cell.getNumericCellValue());
} else {
value = sdf.format(cell.getDateCellValue());
}
break;
case Cell.CELL_TYPE_BOOLEAN:
value = cell.getBooleanCellValue();
break;
case Cell.CELL_TYPE_BLANK:
value = "";
break;
default:
break;
}
// 将每一行的单元格存入小list
list.add(value);
}
// 将每个标的所有行存入listob
listob.add(list);
}
}
work.close();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(listob);
return listob;
}
获取单元格格式的 cell.getCellType方法过时了,然而官方也没有给出替换的方法,说明也很模糊,嘛,反正还能用ssm框架,poi下的Excel导入,提取list
最新推荐文章于 2020-10-07 11:03:02 发布