关于导入.xlsx和.xls文件的一点心得

来源:互联网 发布:国家顶级域名有哪些 编辑:程序博客网 时间:2024/05/18 06:22


首先,如果导入.xls的Excell,可以直接调用new ExcelRead().readExcel(file)方法,将Excell转成list;而如果是.xlsx的Excell,该方法就不可用了,为什么不可用,我在这就不多说了。现在直接上代码,以视说明:

前端页面<form id="queryForm" method="post">上传文件:</div><input id="file" type="file" name="file"><input type="button" onclick="doSaveExcell()" value="确   定" style="margin-top:5px;" /></form>

说明:这里用的不是form提交,如果要form提交,应在form中加入enctype="multipart/form-data" action="xx/xx.do"

function doSaveExcell(){
var form = new FormData(document.getElementById("queryForm"));

$.ajax({
url:"/xx/xx.do",
type : "POST",
data:form,
cache: false,
processData:false,
                contentType:false,
async: false,
success : function(data){

}
});
}

先说导入.xls的Excell:

1.在后台接收file@RequestParam(value = "file", required = false) MultipartFile file

2.将Excell转成list:List<ArrayList<String>> list = new ExcelRead().readExcel(file);

再说导入.xlsx的Excell:

1.将file文件存入服务器,并生成路径filepath

2.将xlsx文件解析出来并转成集合

public List<Map<String, Object>> doXlsxleading(String filepath){
List<Map<String, Object>> resultList = new ArrayList<Map<String,Object>>();
// 构造 XSSFWorkbook 对象,strPath 传入文件路径  
      XSSFWorkbook xwb = null;
      try {

//这个filepath的生成路径,可以在控制层现将其文件暂时存入服务器,然后再将其删除
      xwb = new XSSFWorkbook(new FileInputStream(filepath));
      } catch (IOException e) {
      return resultList;
      }  
       // 读取第一章表格内容  
       XSSFSheet sheet = xwb.getSheetAt(0);  
       xwb.getSheetAt(1);
      // 定义 row、cell  
       XSSFRow row;  
       String cell;  
       // 循环输出表格中的内容  
       for (int i = sheet.getFirstRowNum(); i < sheet.getPhysicalNumberOfRows(); i++) {  
           row = sheet.getRow(i);  
           Map<String, Object> resultMap = new HashMap<String, Object>();
           for (int j = row.getFirstCellNum(); j < row.getPhysicalNumberOfCells(); j++) {  
              // 通过 row.getCell(j).toString() 获取单元格内容,  
              cell = row.getCell(j).toString(); 
              resultMap.put("cell"+j, cell);
          }  
           resultList.add(resultMap);
       }
        //将临时生成filepath的文件删除
       File file = new File(filepath);
       if (file.exists() && file.isFile()) {
        file.delete();
    }
return resultList;
}

3.调用doXlsxleading(String filepath)方法,生成list