导入与导出

Easypoi使用

  1. 导出
 //导出Excel表格
    @RequestMapping("/download")
    public String employeeDownload(EmployeeQuery employeeQuery, HttpServletRequest request,ModelMap map){
        List<Employee> list = iEmployeeService.findSpec(employeeQuery);
        //获得图片的真实路径
        String realPath = request.getServletContext().getRealPath("");
        list.forEach(e ->{
            e.setHeadImage(realPath+e.getHeadImage());
        } );
        ExportParams params = new ExportParams("员工", "员工管理", ExcelType.XSSF);
        //表示导出的表格左边三列冻结,当没有设置的时候,默认的是前两行冻结
        //params.setFreezeCol(3);
        map.put(NormalExcelConstants.DATA_LIST, list); // 数据集合,这个地方必须是list集合
        map.put(NormalExcelConstants.CLASS, Employee.class);//导出实体
        map.put(NormalExcelConstants.PARAMS, params);//参数
        map.put(NormalExcelConstants.FILE_NAME, "employee");//文件名称
        //返回的名称 :easypoiExcelView -> 并没有找我的bean,而且当做一个路径去进行访问
        //  现在默认去找的视图解析器,而没有找我的那一个bean
        return NormalExcelConstants.EASYPOI_EXCEL_VIEW;//View名称
    }
}

1.2配置xml

 <!-- bean的视图解析器  p:order="0":顺序在最前面 -->
    <bean id="beanNameViewResolver" class="org.springframework.web.servlet.view.BeanNameViewResolver"
          p:order="0" ></bean>

1.3导出

//    接收文件:MultipartFile  empFile文件名字必须和前面jsp页面传的name值保持一致
    @RequestMapping("/employeeXlsx")
    public String employeeXlsx(MultipartFile empFile, HttpServletResponse response){
        ImportParams params = new ImportParams();
        //设置表头
        params.setHeadRows(1);
        try {
            //设置需要验证为true
            params.setNeedVerfiy(true);
            //设置验证规则
            params.setVerifyHandler(iExcelVerifyHandler);
            ExcelImportResult<Employee>  result = ExcelImportUtil.importExcelMore(
                    empFile.getInputStream(),
                    Employee.class, params);
            result.getList().forEach(e ->{
                //得到部门的对象
                Department department = iDepartmentService.findByName(e.getDepartment().getName());
                e.setDepartment(department);
                //设置初始密码,因为导入的文件中没有密码
                String pwd = MD5Utils.creatPwd(e.getUsername());
                e.setPassword(pwd);
                e.setHeadImage("/images/head/avatar.png");
                //将每一个对象保存早到数据库
                iEmployeeService.save(e);
            } );
            if(result.isVerfiyFail()){
                //得到错误的工作簿
                Workbook failWorkbook = result.getFailWorkbook();
                response.setHeader("content-disposition", "attachment;filename=error.xlsx");
                ServletOutputStream out= response.getOutputStream();
                failWorkbook.write(out);
                out.flush();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        return "/import/index";
    }
}

1.4导入页面

<form action="/import/employeeXlsx" method="post" enctype="multipart/form-data">
    <input class="easyui-filebox" name="empFile" style="width:80%"
           data-options="prompt:'选择一个文件...',buttonText: '选择文件'" />
    <button class="easyui-linkbutton">导入</button>
</form>

1.5自定义用户唯一性校验

/**
 * 用户名唯一性校验
 */
@Component
public class IExcelVerifyHandlerCheck implements IExcelVerifyHandler<Employee> {
@Autowired
private IEmployeeService iEmployeeService;
    @Override
    public ExcelVerifyHandlerResult verifyHandler(Employee employee) {
        Employee emp = iEmployeeService.findByUsername(employee.getUsername());
        System.out.println(emp);
        if(emp!=null){
            //如果用户名已存在就应该返回一个flase
        return new ExcelVerifyHandlerResult(false,"用户名已经存在");
        }
        return new ExcelVerifyHandlerResult(true);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

small__stones

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值