前端导出表格乱码情况

学习总结

本周一直在改项目的bug然后遇到了一个新的东西是blob对象
Blob对象是一种表示不可变、原始数据的数据类型。它可以用于存储二进制数据、文件数据或大型数据等。
1 创建blob对象

const blob = new Blob([data], { type: 'mime/type' });
//data是二进制数据

通过FormData对象的getBlob方法创建Blob对象

const formData = new FormData();
formData.append('file', file);
const blob = formData.getBlob('file');

将Blob对象转换成URL,用于在浏览器中显示或下载文件:

const url = URL.createObjectURL(blob)

我们这次写的项目有导出表格的功能就用了这个方法 是同步访问后端接口

outResAll.onclick = function () {
  axios({
    method: 'get',
    url: `${url}/admin/exportAllSelectResult`,
    headers: {
      token: token
    },
    responseType: 'blob',

  })
    .then((response) => {
      const decodedText = response.data;
      var blob = new Blob([decodedText], { type: 'application/vnd.ms-excel;charset=utf-8' });
      // 创建下载链接
      var downloadLink = document.createElement('a');
      downloadLink.href = URL.createObjectURL(blob);
      downloadLink.download = '选课结果.xlsx'; // 设置文件名

      // 添加到页面并模拟点击下载
      document.body.appendChild(downloadLink);
      downloadLink.click();

      // 清理下载链接
      document.body.removeChild(downloadLink);
    })
    .catch((err) => {
      console.log(err);
    })
}

代码如上 注意的是 第一次存在乱码情况 最后解决方法是在其上加了 responseType: ‘blob’,
总结一下写项目的注意事项
1 axios的版本可能会造成打包问题
2 代码需要规范 不要出现死数据
3 需要按照要求来进行pkg打包

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值