layui实现上传Excel文件,java后台接收并入库

前台代码:web

<div class="layui-row bd-border ">
    <div class="layui-input-inline">
        <label class="layui-form-label">选择文件:&nbsp;</label>
        <div class="layui-input-inline" style="width: 150px;">
            <button type="button" class="layui-btn" id="test1">
                <i class="layui-icon">&#xe67c;</i>选择
            </button>
        </div>
        <div class="layui-input-inline">
            &nbsp;&nbsp;
            <button class="layui-btn bd-btn-radius layui-btn-normal" id="submit">确&nbsp;&nbsp;&nbsp;&nbsp;定</button>
        </div>
    </div>
</div>
$(function(){
    var uploadFileUrl = '../map/upload';
    layui.use('upload', function(){
        var upload = layui.upload;

        //执行实例
        var uploadInst = upload.render({
            elem: '#test1' //绑定元素
            ,url: '../map/upload' //上传接口
            ,done: function(res){
                //上传完毕回调
                alert(res);
            }
            ,error: function(){
                //请求异常回调
                alert(111);
            }
            ,accept:'file'//容许的文件类型
            ,auto: false//选择文件后是否自动上传
            ,bindAction:'#submit'

        });
    });
});

后台接收代码:spring

@RequestMapping(value = "/upload")
@ResponseBody
public Map<String,Object> upload( MultipartFile file, HttpServletRequest request){
    Map<String,Object> modelMap = new HashMap<>();
    List<MapPoint> mapPointList = new ArrayList<>();
    //读取IO流文件
    InputStream input = null;
    XSSFWorkbook wb = null;
    try {
        input=file.getInputStream();
        wb=new XSSFWorkbook(input);
        //读取页
        for(int sheetNum=0;sheetNum<wb.getNumberOfSheets();sheetNum++){
            XSSFSheet xssfSheet = wb.getSheetAt(sheetNum);
            if(xssfSheet==null){
                continue;
            }
            //读取行
            for(int rowNum=1;rowNum<xssfSheet.getLastRowNum()+1;rowNum++){
                MapPoint mapPoint = new MapPoint();
                XSSFRow row= xssfSheet.getRow(rowNum);
                if(row!=null){
                    for(int cellNum=0;cellNum<row.getLastCellNum();cellNum++){
                        row.getCell(cellNum);//获取每个单元格具体值,可根据需求转成任意数据类型
                    }
                }
                mapPointList.add(mapPoint);
            }
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    mapService.insertMapPoint(mapPointList);

    modelMap.put("success",true);
    return modelMap;
}

须要注意的是,须要在spring-mvc.xml中加以下配置,后台才能正常接收到文件spring-mvc

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">