excel导入&下载模板

exportExcel导入&下载模板

1.下载exportExcel模版

    // 下载导入模板(vue2放在根目录static下,要用英文名,要用绝对路径)
    downLoadExcel() {
      const a = document.createElement('a')
      a.href = 'https://tanlink-erp.oss-cn-hangzhou.aliyuncs.com/target.xlsx'
      // a.download = '工厂开票信息.xlsx'
      a.style.display = 'none'
      document.body.appendChild(a)
      a.click()
      a.remove()
    },

ps :a.href 只向的是oss 上面的静态文件也可通过接口指向后端返回的地址

2.exportExcel 导入

在utils 下面新增一个js 方法,可能有点长cv一下 ,有更好的方法也可不用

// 封装公共下载表格方法
const exportExcel = (data, fileName) => { // data 后端返回文件流 fileName 自定义下载文件名
  const blob = new Blob([data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }) // 将返回的数据通过Blob的构造方法,创建Blob对象
  if ('download' in document.createElement('a')) {
    const link = document.createElement('a') // 创建a标签
    link.download = fileName
    link.style.display = 'none'
    link.href = URL.createObjectURL(blob) // 创建一个指向blob的url,点击可以下载文件
    document.body.appendChild(link)
    link.click()
    URL.revokeObjectURL(link.href)
    document.body.removeChild(link)
    // this.$message.success(data.msg)
  } else {
    navigator.msSaveBlob(blob, fileName)
  }
}
export default exportExcel

用el-upload 上传文件

       <el-upload
              ref="uploadImport"
              class="upload-demo"
              action=""
              :http-request="upLoad"
              :before-upload="beforeUpload"
              :file-list="fileList"
              accept=".xls,.xlsx"
              :auto-upload="true"
              :multiple="false"
              :show-file-list="false"
              style="display: inline-block;"
            >
              <el-button type="primary" size="small">导入目标</el-button>
            </el-upload>
    upLoad(param) {
      const formData = new FormData()
      formData.append('file', param.file)
      importTargetASINAPI(formData).then(res => {
        const fileName = '目标导入记录' + '.xlsx' // 表格名称
        exportExcel(res, fileName)
        this.dialogImportLog = false
      })
    },
    // 上传文件之前的钩子:判断上传文件格式、大小等,若返回false则停止上传
    beforeUpload(file) {
      // 文件类型
      const isType = file.type === 'application/vnd.ms-excel'
      const isTypeComputer = file.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
      const fileType = isType || isTypeComputer
      if (!fileType) {
        this.$message.error('上传文件只能是Xls/Xlsx/CSV格式!')
      }

      // 文件大小限制为5M
      const fileLimit = file.size / 1024 / 1024 < 5
      if (!fileLimit) {
        this.$message.error('上传文件大小不超过5M!')
      }
      return fileType && fileLimit
    },

最后调用后端的接口即可

在这里插入图片描述

// 处理后端返回的数据格式问题
    upLoad(param) {
      const formData = new FormData()
      formData.append('file', param.file)
      importTargetASINAPI(formData).then((res) => {
        if (res.type === 'application/json') {
          const reader = new FileReader() // 创建FileReader实例
          reader.readAsText(res, 'utf-8') // 读取文件, 用字符串显示
          reader.onload = () => {
         console.log(JSON.parse(reader.result))// string 转 json
          }
        } else {
          this.dialogImportLog = false
          this.$message.warning('格式错误,请检查导入的数据!')
          const fileName = '目标导入记录' + '.xlsx' // 表格名称
          exportExcel(res, fileName)
        }
      })
    },
// 导入目标asin
export function importTargetASINAPI(data) {
  return request({
    url: 'object/import/asin',
    method: 'post',
    responseType: 'blob',
    data

  })
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值