SpringBoot+Vue实现Excel文档导入和导出

1.准备工作

1.1.前端程序

在前端首先加上批量导出的按钮,如下


批量导出

 在添加了点击事件之后,在methods中要与之对应的添加上exportData的方法,其中multipleSelection是复选框中勾选后用户的id,下面的代码逻辑为,当我没有勾选复选框的时候(也就是multipleSelection的长度为0时)就执行导出功能

//批量导出
    exportData(){
      //没有选择行的时候全部导出,或者根据搜索条件导出
      if(!this.multipleSelection.length){
       
      }
    },

 1.2.后端程序

前端基本架构写好了,接下来我们开始写后端的接口,如下 

  • 接口的参数有两个,一个是用户的名字,一个是response对象(为了获取输出流,将Excel写回浏览器)
  • 借助hutool工具包提供的ExcelUtil类获取一个ExcelWrite对象(别忘了导入hutool的jar包)


  cn.hutool
  hutool-all
  5.7.16
  • 执行查询所有用户,将结果添加到write对象中
  • 在获取了输出流之后,将write对象写到流里
     /**
     * 批量导出
     * @param name
     */
    @GetMapping("/export")
    public void exportData(@RequestParam(required = false) String name, HttpServletResponse response) throws IOException {
        ExcelWriter writer = ExcelUtil.getWriter(true);
        List list = new ArrayList<>();
        //第一种:全部导出(当name为空的时候执行,也就是说前端没有勾选复选框时,全部导出)
        if(StringUtils.isBlank(name)){
            //查询所有用户
            list = userService.list();
        }
        writer.write(list,true);
        //获取输出流
        ServletOutputStream outputStream = response.getOutputStream();
        //将excel写入到输出流里,并设置用完流之后就关闭
        writer.flush(outputStream,true);
    }

2.完善工作

这个时候,后端的程序也基本写好了,现在返回前端来写请求,我的请求之中添加了token,因为之前添加过jwt验证,如果没有token的话,就不能访问,但是之前在axios的请求头中都添加了token,而这个请求是js中的,所以要自己手动在请求路径中添加一个token(而之前后端程序中写了,如果请求头里没有token,那么后台会自己在请求路径中寻找token)

  //批量导出
    exportData(){
      //没有选择行的时候全部导出,或者根据搜索条件导出
      if(!this.multipleSelection.length){
        window.open('http://localhost:8082/user/export?token='+this.user.token)
      }
    },

3.测试

前后端框架基本写好了,接下来进行测试,启动前后端工程后,点击批量导出

SpringBoot+Vue实现Excel文档导入和导出_第1张图片

可以看到,报了500的错误,那就表明是后台代码写的有问题,返回后端查看&#x

你可能感兴趣的:(spring,boot,vue.js,excel)