/**
* 读取Excel表格内容
* @param
* @return 数据 List<Map<行号, HashMap<列名, 值>>>
*/
@SuppressWarnings("resource")
public static Json getExcelData(MultipartFile file) {
Json json = Json.newSuccess();
if(file == null || file.isEmpty()) {
json.setS(false);
json.setMsg("文件不存在!");
return json;
}
Workbook wbs = null;//工作簿对象
try{
InputStream iStream = file.getInputStream();
String fileName = file.getOriginalFilename();
if(fileName.endsWith(XLS)){
//2003
wbs = new HSSFWorkbook(iStream);
}else if(fileName.endsWith(XLSX)){
//2007
wbs = new XSSFWorkbook(iStream);
}
}catch(IOException e){
logger.error("读取excel文件错误");
json.setS(false);
json.setMsg("读取excel文件错误");
return json;
}
if(wbs != null) {
List<Map<Integer, HashMap<String, Serializable>>> sheetDataList = new ArrayList<Map<Integer, HashMap<String, Serializable>>>();
if(wbs.getNumberOfSheets() == 0){
logger.error("上传excel文件不存在工作表");
json.setS(false);
json.setMsg("上传excel文件不存在工作表");
return json;
}
//依次遍历每个sheet的数据
for(int sheetNum=0; sheetNum < wbs.getNumberOfSheets(); sheetNum++){
Sheet sheet = wbs.getSheetAt(sheetNum);
if(sheet != null){
int rowCnt = sheet.getLastRowNum();//总行数(第一行是字段描述、第二行是字段名、第三行开始字段值)
//总行数小于2行(排除空数据)继续读下一张sheet数据
if(rowCnt < 2){//取值0、1
continue;
}
// 存放excel数据Map<行号, HashMap<列名, 值>>
Map<Integer, HashMap<String, Serializable >> sheetData = new HashMap<Integer, HashMap<String, Serializable>>();
//逐行获取Excel列数据
HashMap<String, Serializable> cellValueMap = new HashMap<String, Serializable>();
for(int rowNum = 2; rowNum <= rowCnt; rowNum++){//第三行开始读取数据
Row rowData = sheet.getRow(rowNum);
if(rowData==null){//剔除空行
continue;
}
//读取每行的每列数据
for(int cellNum = 0; cellNum <= rowData.getLastCellNum(); cellNum++){
String cellDesc = sheet.getRow(0).getCell(cellNum).getStringCellValue();//字段描述
String cellName = sheet.getRow(1).getCell(cellNum).getStringCellValue();//字段名
String cellValue = rowData.getCell(cellNum) == null ? "":rowData.getCell(cellNum).getStringCellValue().trim();//字段值
cellValueMap.put(cellName, cellValue);
}
sheetData.put(rowNum, cellValueMap);//sheet每一行
}
sheetDataList.add(sheetData);//每一个sheet
}
}
json.setObj(sheetDataList);
}
return json;
}
其中Json
private static String DEFAULT_SUCCESS_MSG = "操作成功";
private static String DEFAULT_FAIL_MSG = "操作失败";
//是否成功
private boolean s;
//错误码
private String errCode;
//错误描述
private String msg;
//附加对象
private Object obj;
网友评论