前端项目之导入、导出、下载模板

这篇具有很好参考价值的文章主要介绍了前端项目之导入、导出、下载模板。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

组件封装

<template>
  <div>
    <el-button
      v-if="importUrl"
      type="success"
      @click="importFile"
    >导入</el-button>
    <el-button
      v-if="exportUrl"
      type="success"
      @click="exportFile"
    >导出</el-button>
    <el-dialog
      title="导入 excel 提示"
      :visible.sync="DialogVisible"
      width="30%"
      center
      :close-on-click-modal="false"
    >
      <span>如果没有模版请先下载模版</span>
      <span slot="footer" class="dialog-footer">
        <el-button style="margin-bottom: 15px" @click="download()">
          下载模板
        </el-button>
        <el-upload
          ref="upload"
          type="primary"
          action="#"
          :http-request="beforeUploadAdd"
        >
          <el-button type="primary">继续导入</el-button>
        </el-upload>
      </span>
    </el-dialog>
  </div>
</template>

<script>
import { getAccessToken } from "@/utils/auth";
import { ImportExcel, ExportExcel } from '@/api/exportAndImport/exportAndImport'

export default {
  props: {
    importUrl: {
      type: String,
      default: ''
    },
    exportUrl: {
      type: String,
      default: ''
    },
    importCode: {
      type: String,
      default: ''
    },
    exportCode: {
      type: String,
      default: ''
    },
    pam: {
      type: Object,
      default: function() {}
    },
    moduleUrl: {
      type: String,
      default: ''
    }
  },
  data: function() {
    return {
      DialogVisible: false,      
      headers: { Authorization: "Bearer " + getAccessToken() }, // 设置上传的请求头部      
      baseUrl: process.env.VUE_APP_BASE_API,
    }
  },
  methods: {
    async beforeUploadAdd(obj) {
      try {
        const fd = new FormData()
        fd.append('file', obj.file)
        const { code, data } = await ImportExcel(this.importUrl, fd)
        if (code === 200 && !data) {
          this.$message({
            type: 'success',
            message: '导入成功!'
          })
          this.$emit('reload')
        } else if (code === 200 && data) {
          this.$message({
            type: 'error',
            message: '导入失败!'
          })
          this.downloadError(data)
        }
      } catch (error) {
        console.error(error)
      } finally {
        this.DialogVisible = false
      }
    },

    downloadError(data) {
      this.DialogVisible = false
      const val = this.baseUrl + `${data}`
      var a = document.createElement('a')
      a.href = val
      a.click()
    },
    // 下载模板
    download() {
      const val = this.baseUrl + `${this.moduleUrl}`
      
      // token下载方式(不带请求头)
      // const token = getAccessToken()
      // this.DialogVisible = false
      // const val = this.baseUrl + `${this.moduleUrl}?token=${token}`
      // var a = document.createElement('a')
      // a.href = val
      // a.download = 'bidModel.xls'
      // a.click()

	//携带请求头下载方式
      fetch(val, {
          method: 'GET',
          // headers: new Headers({
          //   //自己加的头信息全都要转成string
          //   id: xxxx.toString(),
          //   'ACCESS-TOKEN': window.localStorage.getItem('ACCESS-TOKEN') as string,
          // }),
          headers: this.headers
       })
      .then(res => res.blob())
      .then(data => {
        const blobUrl = window.URL.createObjectURL(data);
        this.downloadFile(blobUrl);
      });
    },

    downloadFile(blobUrl) {
      const a = document.createElement('a');
      a.download = 'bidModel.xls';
      a.href = blobUrl;
      a.click();
    },
    async importFile() {
      this.DialogVisible = true
    },
    // 导出所有项目
    async exportFile() {
      try {
        const { code, data } = await ExportExcel(this.exportUrl, this.pam)
        if (code === 200) {
          const dom = document.createElement('a')
          dom.href = this.baseUrl + data
          dom.style.display = 'none'
          document.body.appendChild(dom)
          dom.click()
          dom.parentNode.removeChild(dom)
        }
      } catch (error) {
        console.error(error)
      }
    }
  }
}
// auth.js
// export function getAccessToken() {
//    return localStorage.getItem(AccessTokenKey)
// }
</script>

页面引入

<ExportAndImport
   export-url="导出接口地址"
   import-url="导入接口地址"
   module-url="模板下载接口地址"
   :pam="参数obj"
   @reload="导入后获取列表方法"
 />

文章来源地址https://www.toymoban.com/news/detail-613600.html

到了这里,关于前端项目之导入、导出、下载模板的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 文件上传(模板导出、批量导入)

    html部分 b class=\\\"addBtn UseraddBtn\\\" style=\\\"background: #3d7bde;right: 93px;\\\"+ 批量导入/b           input type=\\\"file\\\" id=\\\"fileInput\\\"             style=\\\"opacity: 0;right: 93px;width: 88px;height:29px;position: absolute;top:-5px\\\" οnchange=\\\"BatchImport()\\\"           a href=\\\"./模板.xlsx\\\" class=\\\"addBtn UseraddBtn\\\" target=\\\"_blank\\\"        

    2023年04月08日
    浏览(25)
  • easypoi 模板导入、导出合并excel单元格功能

    hutool 导出复杂excel(动态合并行和列) java使用poi读取跨行跨列excel springboot集成easypoi并使用其模板导出功能和遇到的坑 Easypoi Excel模板功能简要说明 easypoi 模板导出兼容合并单元格功能 高校校舍使用情况统计表 单位(盖章): 填表人: 部门负责人: 分管校领导: 填表日期:

    2023年04月22日
    浏览(40)
  • C#读写导入导出Excel表格模板(NPOI)

    NPOI是指构建在POI 3.x版本之上的一个程序,NPOI可以在没有安装Office的情况下对Word或Excel文档进行读写操作。 NPOI是一个开源的C#读写Excel、WORD等微软OLE2组件文档的项目。 1、您可以完全免费使用该框架 2、包含了大部分EXCEL的特性(单元格样式、数据格式、公式等等) 3、专业的技

    2023年04月08日
    浏览(29)
  • EasyExcel导出带下拉选数据的Excel数据导入模板

    #因为项目中需要导入一些信息,但是这些信息比较不常见,且在项目字典数据中维护有这些数据,所以在导出模板的时候,把这些数据一并导出,可以减少用户的编写,避免在导入的时候因为数据错误,发生一些业务问题 直接开始 1、以岗位类型为例,展示数据的实现方式

    2024年02月03日
    浏览(33)
  • 【Go】excelize库实现excel导入导出封装(三),基于excel模板导出excel

    大家好,这里是符华~ 关于excelize库实现excel导入导出封装,我已经写了两篇了,我想要的功能基本已经实现了,现在还差一个模板导出,这篇文章就来讲讲如何实现用模板导出excel。 前两篇: 【Go】excelize库实现excel导入导出封装(一),自定义导出样式、隔行背景色、自适应

    2024年01月25日
    浏览(41)
  • 基于Luckysheet实现的协同编辑在线表格支持在线导入数据库,前端导出,前端导入,后端导出

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 提示:这里可以添加本文要记录的大概内容: 这两年,在线表格协作工具越来越火,但开源界一直没有相关的实现,被垄断在几个大厂手上,随着Luckysheet 的横空出世,开源界终于也有一个漂亮能打的在

    2024年02月11日
    浏览(39)
  • 前端导入导出excel记录

    前端模块的导入导出excel功能,大体分为两个逻辑。 前端使用导入组件,获取excel,交给 后端处理 前端使用导入组件,获取excel,自己 解析数据 ,然后调用数据存储的方法。 我们分别对这两种方法进行记录。 导出 组件: 方法: api: util: 导入 组件: 方法: 工具方法: 导

    2024年02月12日
    浏览(24)
  • 云小课|RDS for MySQL参数模板一键导入导出,参数配置轻松搞定

    摘要: 云数据库RDS for MySQL支持参数模板的导入和导出功能。 本文分享自华为云社区《【云小课】【第56课】RDS for MySQL参数模板一键导入导出,参数配置轻松搞定》,作者:数据库的小云妹。 云数据库RDS for MySQL支持参数模板的导入和导出功能。 导入参数模板:导入后会生成

    2024年02月09日
    浏览(28)
  • 纯前端实现 导入 与 导出 Excel

    最近经常在做 不规则 Excel 的导入,或者一些普通 Excel 的导出,当前以上说的都是纯前端来实现;下面我们来聊聊经常用到的Excel导出与导入的实现方案,本文实现技术栈以 Vue2 + JS 为例 导入分类: 调用 API 完全由后端来解析数据,清洗数据,前端只负责调用 API ; 前端解析

    2024年02月09日
    浏览(33)
  • 【前端】批量导入和导出Excel数据

    excel导入功能需要使用npm包 xlsx ,所以需要安装 xlsx 插件,读取和写入都依赖她 vue-element-admin模板提供了一个导入excel数据的文件,我们只需用即可 代码地址: https://github.com/PanJiaChen/vue-element-admin/blob/master/src/components/UploadExcel/index.vue 将vue-element-admin提供的导入功能新建一个组件

    2024年02月09日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包