关于Vue2 - excel下载以及上传excel

在做前端excel导出的时候发现了一个报错

但是这个报错是出现在request中 因为判断401的时候发现少带了个response,导致做excel出现了status为undefind。

现在讲解excel怎么做。

#1 下载包。

yarn add file-saver

#2 导入包。

import { saveAs } from 'file-saver'

#3 重点 在调用接口的时候 一定要问清楚后端是什么类型的文件 但是在发送请求的时候一定要在接口定义类型 responseType: 'blob'。

3.1如果后端返回的是普通数据,需要‘xlsx’把普通数据转换成二进制,然后再通过 ‘file-saver’ 保存为excel文件。

3.2 如果后端传回的是二进制的数据,只需要通过‘file-saver’包保存excel文件。

async btnImportExcel() {
  saveAs(await importExportDate(), '在职员工信息.xlsx')
},

4.该如何上传表格呢?

​​​​​​​跟下载表格是同理,也需要跟后端确认文件类型。

但是需要依靠input获取文件。

废话不多说,上代码!

#1 首先准备一个input框

<input ref="excel-upload-input" class="excel-upload-input" type="file" accept=".xlsx, .xls" @change="uploadChange">

#2 需要一个按钮来唤醒input

<el-button type="text" @click="upLoadExcel">点击上传</el-button>

#1 - #2 代码如下

#1 这是input框需要获取的文件
async uploadChange(res) {
    const files = res.target.files[0]
    // 判断
    if (files) {
      try {
        // #0 加工成 formData
        const f = new FormData()
        // key 不能乱写,是后端固定的,值就是文件信息
        f.append('file', files)
        // #1 上传给后端
        await excelMangerImport(f)
        // #2 前端更新
        this.$emit('getManger')
        // #3 上传完成关闭弹窗
        this.$emit('update:showImportTable', false)
        // #4 提示
        this.$message.success('导入成功')
      } catch (error) {
        console.log(error)
      } finally {
        this.$refs['excel-upload-input'].value = ''
      }
 }


#2 这是按钮唤醒input
upLoadExcel(res) {
   // 唤醒input 需要用refs唤醒
   this.$refs['excel-upload-input'].click()
}

上传最重要的部分 finally

我在实行上传表格时, 发现同样表格名称和不同内容会出现报错,在特此在finally设置清除input的value值,这样保证在同名表格下可以传输不同的内容。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值