vue+element 在 企业级项目中 实现excel的导入导出

excel的导入导出

1.vue 页面

<el-form-item label="导入文件">
          <el-upload
            class="upload-demo"
            action=""
            :auto-upload="false"
            :show-file-list="false"
            :on-change="selectFile"
          >
            <el-input
              clearable
              readonly
              v-model="queryParams.postName"
              placeholder="请选择文件"
              style="width:180px;"
            />
          </el-upload>
        </el-form-item>

        <el-form-item>
          <el-button
            type="primary"
            :disabled="!queryParams.orgCode||!queryParams.postName"
            @click="uploadFile"
          >导入
          </el-button>

          <el-button
            type="primary"
            size="mini"
            @click="tempDown"
          >模板下载
          </el-button>
        </el-form-item>

2.方法部分

 import { importUserFile, downloadExcel } from '@/api/business/schedule'
 /*
    *  导入文件 
    */
    uploadFile () {
      importUserFile({
        file: this.file,
        orgCode: this.queryParams.orgCode
      }).then(() => {
        this.getList() // 导入成功刷新列表
        this.$message({
          type: 'success',
          message: '导入成功!'
        })
      })
    },
    /*
    *  模板下载
    */
    tempDown () {
      downloadExcel({
        type: 1
      }).then(() => { })
    },

3.接口封装部分

导入时, 使用formData的形式去请求接口–设置好我们的请求头
导出时,就等同于下载图片…类似的方法

// 导入文件
export function importUserFile(data) {
  const formData = new FormData()
  formData.append('file', data.file)
  formData.append('orgCode', data.orgCode)

  return request({
    url: `${baseUrl}/excel/importArranges`,
    method: 'post',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data',
    }
  })
}

// 导出 excel
export function downloadExcel(params) {
  let filename = ''
  if (params.type == 1) {
    filename = '班次模板.xlsx'
  }
  return request({
    url: `${baseUrl}/excel/download`,
    method: 'get',
    params,
    responseType: 'blob'
  }).then((data) => {
    let link = document.createElement('a')
    let blob = new Blob([data], { type: 'application/vnd.ms-excel' })
    link.style.display = 'none'
    link.href = URL.createObjectURL(blob)
    link.download = filename //下载的文件名
    document.body.appendChild(link)
    link.click()
    document.body.removeChild(link)
  }).catch((r) => {
    console.error(r)
  })
}

希望能帮助到需要帮助的小伙伴!
加油!
奥利给!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值