如何使用POI导入导出到excel表格

如何使用POI导入导出到excel表格

鉴于本人水平如发现不足之处希望大家指出

导入


@RequestMapping("user/uploadExcel")
    @ResponseBody 
    public ResultMessage uploadExcel(HttpServletRequest request) throws IOException, InvalidFormatException{
        /*
        System.out.println("byubjk");
        Map<String, MultipartFile> map = multipartHttpServletRequest.getFileMap();
        *///把所有得到的文件所对应的表的数据放入一个map中
        System.out.println("--------------------导入excel");
        MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest) request;
       Map<String, MultipartFile> map =      multipartHttpServletRequest.getFileMap();

       int i=0;
         for (String  key : map.keySet()) {
               MultipartFile file = map.get(key);//得到当个文件
               //得到文件相关的输入流
               InputStream is = file.getInputStream();

               //根据上传的excel文件  构建一个WorkBook对象
               Workbook workbook = WorkbookFactory.create(is);
               Sheet wsheet =  workbook.getSheetAt(0);//读取第一个sheet表格
               String fieldsStr = "userChName,mobilePhone,email,userSex,userName,orgName,provinceName,cityName";

               ExcelUtil excelUtil = new ExcelUtil();
               List<Map<String, Object>> list =   excelUtil.readSimple(wsheet, 2, fieldsStr.split(","));
               //处理性别

              for (Map<String, Object> map2 : list) {
                Object sex = map2.get("userSex");
                if (sex!=null&&!sex.equals("")) {
                     if ("男".equals(sex)) {
                        sex = 1;
                    }else if ("女".equals(sex)) {
                        sex = 2;
                    }else if ("保密".equals(sex)) {
                        sex = 3;
                    }
                }else{
                    sex = null;
                }

                map2.put("userSex", sex);
                //处理部门
                Object orgName = map2.get("orgName");
                //根据部门名称查询部门id
                long orgId = orgService.selectOrgIdByOrgName(orgName+"");

                map2.put("orgId", orgId);
                System.out.println(map2);
              }

             System.out.println("插入的list:-------------------------"+list);
               i  =   userService.insertDoubleUser(list);
           }
           ResultMessage message = new ResultMessage();
             if (i>0) {
                message.setSuccess(true);
            }else{
                message.setSuccess(false);
            }

            return message; 
    }

导出


@RequestMapping("/user/exportUser")
        @ResponseBody
        public ResultMessage  exportExcel(HttpServletRequest request,HttpServletResponse response) throws Exception{
            System.out.println("--------------------导出excel");
            Map<String, Object> paramMap = super.getParam(request);
            ExcelUtil excelUtil = new ExcelUtil();
            //HSSFWorkBook对象
            //创建HSSFWorkBook对象
            HSSFWorkbook wwb = new HSSFWorkbook();
            //创建sheet对象
            HSSFSheet wsheet = wwb.createSheet();
            //excel导出的工具类
            SimpleExportParameter parameters = new SimpleExportParameter();
            String fieldsIdStr = "userChName,orgName,userSex,mobilePhone,provinceName,cityName,contryName,userBirthday";
            // 导出的excel文件中显示的名称,跟fieldsIdStr顺序一致,个数相等
            String fieldsNameStr = "姓名,所属组织,性别,电话,省份,地市,区县,生日";
            // 导出的excel文件的列宽,以上面的fieldsIdStr,fieldsNameStr个数相等
            String widthsStr = "10,30,20,20,20,20,20,20";

            List<Map<String, Object>> list = userService.exportAllUser(paramMap);
            //特殊字段
            //性别
            for (Map<String, Object> map : list) {
                Object sex = map.get("userSex");
                //sex = null+""===> "null"
                if (sex!=null&&!sex.equals("")) {
                    int userSex = Integer.parseInt(sex+"");
                    if (userSex==1) {
                        sex = "男";
                    }else if (userSex==2) {
                        sex = "女";
                    }else {
                        sex = "保密";
                    }
                }else{
                    sex = "未知";
                }
                map.put("userSex", sex);
            }

            parameters.setDataList(list);
            parameters.setFieldsName(fieldsNameStr.split(","));
            parameters.setFieldsId(fieldsIdStr.split(","));
            parameters.setSheetName("公司员工信息");
            parameters.setTitle("公司员工信息");
            parameters.setWidths(widthsStr.split(","));
            excelUtil.simpleExport(wwb, wsheet, parameters);


            OutputStream fileOutputStream= response.getOutputStream();

            String time = CalendarHelper.getDateTime();
            String fileName = "公司员工信息-"+time+".xls";
            //设置响应头
           response.setHeader("Content-disposition", "attachment; filename="+new String(fileName.getBytes("utf-8"),"iso-8859-1")); 
           response.setContentType("application/msexcel");
           wwb.write(fileOutputStream);

            fileOutputStream.flush();
            fileOutputStream.close();

            ResultMessage message = new ResultMessage();
            message.setMessage("导出成功");
            message.setSuccess(true);
            return message;
        }


JS代码

function exportExcel(){
    location.href="user/exportUser";
}
function importExcel(){
    //弹框  form
    //文件上传
    //1,form  enctype="multipart/form-data"
    //2,method 为post
    //3,提供一个 type为file的input
    var htmlStr = "";
        htmlStr += '<div style="width:600px;background-color:cfcccc" >';    
        htmlStr += '<div style="display:block; padding-bottom:20px;" align="center" >';
        htmlStr += '<form  id = "userExcelFileFormId"  action="user/uploadExcel" enctype="multipart/form-data" method="post" >';
        htmlStr += '<input type="file" id="userExcelFile" name="userExcelFile" onchange="ValidateFileType()" >';
        htmlStr += ' <input type="submit"  value="导入"  />  ';
        htmlStr += '</form>';
        htmlStr += '</table>';
        htmlStr += '</div>';
        htmlStr += '</div>';
        layer.open({
              type: 1,
              skin: 'layui-layer-rim', //加上边框 这个属性可以去static/layer/skin/default/layer.css找到合适的样式 取的是“.”这个属性的前后值
              area: ['auto', 'auto'], //宽高 
              content: htmlStr
            });

    SubmitFuc();    
}

/**
 * 验证上传的文件是否是excel格式的
 * @returns
 */
function ValidateFileType(){
    var fileName = $("#userExcelFile").val();
    var suffix = fileName.substring(fileName.lastIndexOf(".")+1);
    console.log(suffix);
    if (suffix!="xls" && suffix!="xlsx") {
        alert("请选择excel格式的文件");
        $("#userExcelFile").val("");
        return;
    }

}

function SubmitFuc() {
    var options = {
        beforeSubmit : ShowRequest, // 提交前处理
        success : ShowResponse, // 处理完成
        resetForm : true,
        dataType : 'json'
    };

    $('#userExcelFileFormId').submit(function() {//提交表单执行的方法

        var file = document.getElementById("userExcelFile");
        if(!file.value){
            alert("请选Excel文档!");
            return false;
        }

    $(this).ajaxSubmit(options);//用ajax提交表单
    return false;
});
}

function  ShowRequest(){}
function ShowResponse(){
    alert("导入成功");
    //location.href="user/userMana";
    layer.closeAll();

    location.reload();
}

猜你喜欢

转载自blog.csdn.net/weixin_39225655/article/details/75948818
今日推荐