当前位置:首页 > VUE

vue表格实现导出

2026-01-16 02:14:59VUE

使用 vue-json-excel 插件

安装插件:

npm install vue-json-excel --save

在组件中引入并注册:

import JsonExcel from 'vue-json-excel'
export default {
  components: {
    JsonExcel
  }
}

模板中使用:

<download-excel
  :data="tableData"
  :fields="exportFields"
  name="导出文件名.xls">
  <button>导出Excel</button>
</download-excel>

配置数据:

data() {
  return {
    tableData: [...], // 表格数据
    exportFields: {
      '列名1': 'field1',
      '列名2': 'field2'
    }
  }
}

使用 xlsx 和 file-saver 库

安装依赖:

npm install xlsx file-saver --save

创建导出方法:

import * as XLSX from 'xlsx'
import FileSaver from 'file-saver'

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 excelBuffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' })
    const data = new Blob([excelBuffer], { type: 'application/octet-stream' })
    FileSaver.saveAs(data, '导出文件.xlsx')
  }
}

使用 Element UI 的表格导出

如果使用 Element UI 表格,可以结合上述方法:

methods: {
  exportExcel() {
    import('@/vendor/Export2Excel').then(excel => {
      const tHeader = ['列名1', '列名2']
      const filterVal = ['field1', 'field2']
      const data = this.formatJson(filterVal, this.tableData)
      excel.export_json_to_excel({
        header: tHeader,
        data,
        filename: '导出文件'
      })
    })
  },
  formatJson(filterVal, jsonData) {
    return jsonData.map(v => filterVal.map(j => v[j]))
  }
}

自定义 CSV 导出

简单实现 CSV 导出:

methods: {
  exportCSV() {
    let csvContent = "data:text/csv;charset=utf-8,"
    const headers = Object.keys(this.tableData[0]).join(",")
    const rows = this.tableData.map(item => 
      Object.values(item).join(",")
    )
    csvContent += headers + "\r\n" + rows.join("\r\n")
    const encodedUri = encodeURI(csvContent)
    const link = document.createElement("a")
    link.setAttribute("href", encodedUri)
    link.setAttribute("download", "导出数据.csv")
    document.body.appendChild(link)
    link.click()
  }
}

处理大数据量导出

对于大量数据,建议分页处理或使用 Web Worker:

exportLargeData() {
  const worker = new Worker('./exportWorker.js')
  worker.postMessage(this.tableData)
  worker.onmessage = (e) => {
    const blob = new Blob([e.data], { type: 'application/octet-stream' })
    FileSaver.saveAs(blob, '大数据导出.xlsx')
    worker.terminate()
  }
}

exportWorker.js 内容:

self.importScripts('https://cdn.jsdelivr.net/npm/xlsx@0.18.5/dist/xlsx.full.min.js')

self.onmessage = function(e) {
  const worksheet = XLSX.utils.json_to_sheet(e.data)
  const workbook = XLSX.utils.book_new()
  XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1')
  const excelBuffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' })
  self.postMessage(excelBuffer)
}

vue表格实现导出

标签: 表格vue
分享给朋友:

相关文章

vue实现字母添加排序

vue实现字母添加排序

实现字母添加排序的方法 在Vue中实现字母添加排序功能,可以通过以下步骤完成: 创建Vue实例并定义数据 new Vue({ el: '#app', data: { lette…

vue怎么实现

vue怎么实现

Vue 实现方法 Vue 是一个流行的前端框架,用于构建用户界面。以下是几种常见的实现方法: 数据绑定 使用 v-model 指令实现双向数据绑定,适用于表单输入元素。 <input v…

vue实现markdown

vue实现markdown

Vue 实现 Markdown 编辑器 在 Vue 中实现 Markdown 编辑器可以通过集成第三方库或自定义解析器完成。以下是两种常见方法: 使用第三方库(如 marked 或 markdow…

vue实现颜色

vue实现颜色

Vue 实现颜色的方法 在 Vue 中实现颜色管理可以通过多种方式,以下是一些常见的方法: 使用 CSS 变量动态绑定颜色 在 Vue 组件的样式中定义 CSS 变量,并通过 Vue 的数据绑定动态…

vue实现导出

vue实现导出

Vue 实现导出功能的方法 在 Vue 项目中实现导出功能通常涉及将数据导出为 Excel、CSV 或其他格式。以下是几种常见的实现方式: 使用 xlsx 库导出 Excel 安装 xlsx 库:…

vue 实现树状

vue 实现树状

Vue 实现树状结构的方法 递归组件实现树状结构 递归组件是 Vue 中实现树状结构的常见方法。通过组件自身调用自身,可以轻松构建多层级树状结构。 <template> <ul…