若依框架:解决导出(下载)Excel过程中,前端传递list集合,后端获取的问题

解决使用若依框架文件下载的问题

  1. 第一个问题:要下载的数据在数据库里面不存在,所以要将导入的数据筛选后重新导出
  2. 第二个问题:使用若依框架的导出框架进行导出时遇到无法导出文件的问题
  3. 第三个问题:若依框架的封装好的download需要传递json数据给后端,后端如何获取和处理

先上代码–前端:



//两个按钮
<el-button  @click="ExportSucFail(1)">导出成功</el-button>
<el-button  @click="ExportSucFail(2)">导出失败</el-button>
// 点击事件
function ExportSucFail(com) {
  console.log(com)
  if (com===1){
    proxy.$modal.confirm('是否确认导出当前所选图书?', "警告", {
      confirmButtonText: "确定",
      cancelButtonText: "取消",
      type: "warning"
    }).then(function() {
      console.log("aaa")
      //return exportFail(trueList.value);
      return proxy.download("/order/cart_item/exportFail", {list: JSON.stringify(trueList.value)}, `书目导出.xlsx`);
    }).then(response => {
      proxy.$modal.msgSuccess("导出成功");
    }).catch(function() {
      console.log("bbbb")
    });
  }else if (com===2){
    proxy.$modal.confirm('是否确认导出当前所选图书?', "警告", {
      confirmButtonText: "确定",
      cancelButtonText: "取消",
      type: "warning"
    }).then(function() {
      return proxy.download("/order/cart_item/exportFail", {list: JSON.stringify(noExistList.value)}, `书目导出.xlsx`);

    }).then(response => {
      proxy.$modal.msgSuccess("导出成功");
    }).catch(function() {});
  }

}

后端

@PostMapping("/exportFail")
    public void exportFail(HttpServletResponse response, @RequestParam("list") String list) {
        List<DocBookInfo> listdail = JSONArray.parseArray(list, DocBookInfo.class);
        ExcelUtil<DocBookInfo> util = new ExcelUtil<>(DocBookInfo.class);
        util.exportExcel(response,listdail, "图书信息");

    }

return proxy.download("/order/cart_item/exportFail", {list: JSON.stringify(noExistList.value)}, `书目导出.xlsx`);

这个代码是前端下载的接口,是若依封装好的download方法,位置在src/utils/request.js这个文件的download这个方法,他定义了请求头和下载文件返回流的数据格式,如果自己写后端调用接口的话需要定义请求头和文件传输格式,因为后端返回回来的文件流的格式(说白了就是一串乱码)

– 第二个问题是遇到了传输文件格式不对,前端传递的是JSON字符串,在后端就要重新转换为List格式,而不是直接使用List进行接收,我第一次就是直接用@RequestBody 进行接受的,所以会出现’Content-Type’: 'application/x-www-form-urlencoded’类似的异常。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值