vue 封装导出Excel数据的公共函数的方法

yizhihongxing

下面是关于Vue封装导出Excel数据的公共函数的方法的完整攻略:

1. 添加文件依赖

首先,需要在项目中添加xlsx和file-saver两个文件依赖,这两个依赖可以通过npm安装:

npm install --save xlsx file-saver

然后,在Vue组件中调用需要导出Excel的数据的所在请求API,并将请求结果存储在某个变量中。例如:

//在某个Vue组件中
import axios from 'axios'

export default {
  data: {
    tableData: []
  },
  created() {
    this.getTableData()
  },
  methods: {
    async getTableData() {
      const res = await axios.get('/api/tableData')
      this.tableData = res.data
    }
  }
}

2. 创建Excel导出函数

接下来,需要创建一个公用的函数,用于生成Excel文件并导出数据。可以将函数定义在一个单独的Utils类中,或作为Vue组件的方法。函数的主要流程如下:

  • 通过js-xlsx库的工具函数将数组对象(表格数据)转换成Workbook对象
  • 将Workbook对象再通过file-saver库的工具函数下载到本地

示例代码:

// 方式1:Utils类方法
import XLSX from 'xlsx'
import { saveAs } from 'file-saver'

class Utils {
  static exportExcel(tableData, fileName = 'excel-data') {
    const worksheet = XLSX.utils.json_to_sheet(tableData)
    const workbook = XLSX.utils.book_new()
    XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1')
    const buffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' })
    const blob = new Blob([buffer], { type: 'application/octet-stream' })
    saveAs(blob, `${fileName}.xlsx`)
  }
}

// 方式2:Vue组件方法
export default {
  data: {
    tableData: []
  },
  methods: {
    exportExcel() {
      const worksheet = XLSX.utils.json_to_sheet(this.tableData)
      const workbook = XLSX.utils.book_new()
      XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1')
      const buffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' })
      const blob = new Blob([buffer], { type: 'application/octet-stream' })
      saveAs(blob, "excel-data.xlsx")
    }
  }
}

3. 调用Excel导出函数

最后,在Vue组件中添加一个按钮或其他交互元素,当用户点击该元素时,调用Excel导出函数,将表格数据导出到Excel文件。

示例代码:

<!-- 在组件的template中 -->
<template>
  <div>
    <el-table :data="tableData">
      <el-table-column prop="name" label="姓名"></el-table-column>
      <el-table-column prop="age" label="年龄"></el-table-column>
      <el-table-column prop="sex" label="性别"></el-table-column>
    </el-table>
    <el-button type="primary" @click="exportExcel">导出Excel</el-button>
  </div>
</template>
// 在组件的script中
import XLSX from 'xlsx'
import { saveAs } from 'file-saver'
import axios from 'axios'

export default {
  data: {
    tableData: []
  },
  created() {
    this.getTableData()
  },
  methods: {
    async getTableData() {
      const res = await axios.get('/api/tableData')
      this.tableData = res.data
    },
    exportExcel() {
      const worksheet = XLSX.utils.json_to_sheet(this.tableData)
      const workbook = XLSX.utils.book_new()
      XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1')
      const buffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' })
      const blob = new Blob([buffer], { type: 'application/octet-stream' })
      saveAs(blob, "excel-data.xlsx")
    }
  }
}

以上就是Vue封装导出Excel数据的公共函数的方法的详细讲解,其中包含了两种方式的示例说明。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue 封装导出Excel数据的公共函数的方法 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • 详解vue中$nextTick和$forceUpdate的用法

    详解vue中$nextTick和$forceUpdate的用法 1. $nextTick的用法 1.1 作用 $nextTick是Vue中提供的异步方法,用于在下次DOM更新循环结束之后执行延迟回调,在修改数据之后立即使用这个方法,可以获取更新后的DOM。 示例代码: <template> <div> <h2>{{ mes…

    Vue 2023年5月29日
    00
  • JS三级可折叠菜单实现方法

    JS三级可折叠菜单是一种常见的页面交互效果,下面提供一种实现方法。 实现方法 1. HTML结构 首先,需要在HTML结构中定义菜单所需要的层级结构,示例代码如下: <ul id="menu"> <li> <a href="#">一级菜单1</a> <ul> …

    Vue 2023年5月28日
    00
  • Vue拖拽排序组件Vue-Slicksort解读

    下面是详细讲解“Vue拖拽排序组件Vue-Slicksort解读”的完整攻略。 概述 Vue-Slicksort 是一个可拖拽排序组件,其支持排序项的拖拽、交换、插入、删除之类的操作,非常适用于管理后台等需要排序功能的场景。 Vue-Slicksort 的主要特点是高度可定制和易于配置。它封装了一个 Drag and Drop 库,可以直接应用在 Vue.j…

    Vue 2023年5月29日
    00
  • vue3+vite+ts使用monaco-editor编辑器的简单步骤

    使用vue3+vite+ts并集成monaco-editor编辑器需要经过以下步骤: 步骤一:创建vue3项目 使用vue-cli可以创建一个基础的vue3项目,安装vue-cli: npm install -g @vue/cli 然后执行以下命令创建vue3项目: vue create my-app –preset vite/vue 其中my-app是项…

    Vue 2023年5月28日
    00
  • vue页面离开后执行函数的实例

    当我们使用Vue.js来构建前端项目时,有时候需要在页面离开后执行某些操作。这时候我们可以利用Vue的生命周期钩子来实现,在页面离开时执行我们需要的函数。 具体来说,我们可以利用 beforeRouteLeave 钩子在用户离开当前页面前执行某些逻辑。这个钩子会在导航离开当前路由的对应组件时被调用,你可以在该钩子内部访问组件实例 this。 下面是示例代码:…

    Vue 2023年5月28日
    00
  • JS实现简单的抽奖转盘效果示例

    下面是关于“JS实现简单的抽奖转盘效果示例”的完整攻略。 1. 准备工作 首先,我们需要准备以下文件和工具: HTML 文件:作为网页展示的载体。 CSS 文件:用于美化网页样式。 JavaScript 文件:实现抽奖转盘效果的主要代码。 图片资源:包括转盘背景、奖品图标等。 2. HTML 结构搭建 在 HTML 文件中,我们需要搭建转盘的基本结构。示例如…

    Vue 2023年5月28日
    00
  • vue项目页面的打印和下载PDF加loading效果的实现(加水印)

    要实现Vue项目页面的打印和下载PDF加loading效果的实现(加水印),需要按照以下步骤进行: 1. 安装依赖 需要安装以下两个依赖: html2canvas:用于将页面截图并转换为canvas。 jspdf:用于将canvas转成PDF。 可以使用以下命令进行安装: npm install html2canvas jspdf –save 2. 实现打…

    Vue 2023年5月27日
    00
  • vue中watch监听对象中某个属性的方法

    在Vue中,我们可以使用watch来监听对象中某个属性的变化,并且根据变化做出相应的反应。下面就是如何使用vue中的watch监听对象中某个属性变化的攻略: 创建一个监听对象中某个属性的watch方法 在Vue组件中,我们可以使用watch来监听对象中某个属性的变化。首先,在data中定义一个对象,并在其中初始化属性。 data() { return { u…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部