当前位置:首页 > VUE

vue实现导出表格数据

2026-01-22 14:24:43VUE

使用 vue-json-excel 插件导出表格数据

安装 vue-json-excel 插件

npm install vue-json-excel

在 main.js 中引入并注册组件

import JsonExcel from 'vue-json-excel'
Vue.component('downloadExcel', JsonExcel)

在组件中使用

<download-excel 
  :data="tableData"
  :fields="jsonFields"
  name="导出数据.xls">
  <button>导出Excel</button>
</download-excel>
export default {
  data() {
    return {
      tableData: [
        { id: 1, name: '张三', age: 25 },
        { id: 2, name: '李四', age: 30 }
      ],
      jsonFields: {
        'ID': 'id',
        '姓名': 'name',
        '年龄': 'age'
      }
    }
  }
}

使用 xlsx 和 file-saver 库实现导出

安装所需依赖

npm install xlsx file-saver

实现导出功能

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

export default {
  methods: {
    exportExcel() {
      const data = this.tableData
      const worksheet = XLSX.utils.json_to_sheet(data)
      const workbook = XLSX.utils.book_new()
      XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1')
      const excelBuffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' })
      const blob = new Blob([excelBuffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' })
      FileSaver.saveAs(blob, '导出数据.xlsx')
    }
  }
}

使用原生 JavaScript 实现 CSV 导出

实现 CSV 导出方法

export default {
  methods: {
    exportToCSV() {
      const data = this.tableData
      const csvContent = "data:text/csv;charset=utf-8," 
        + data.map(row => Object.values(row).join(",")).join("\n")

      const encodedUri = encodeURI(csvContent)
      const link = document.createElement("a")
      link.setAttribute("href", encodedUri)
      link.setAttribute("download", "导出数据.csv")
      document.body.appendChild(link)
      link.click()
      document.body.removeChild(link)
    }
  }
}

表格数据格式化处理

处理日期和特殊字符

formatData(data) {
  return data.map(item => {
    return {
      ...item,
      date: this.$moment(item.date).format('YYYY-MM-DD'),
      amount: `¥${item.amount.toFixed(2)}`
    }
  })
}

处理多级嵌套对象

flattenData(data) {
  return data.map(item => {
    return {
      id: item.id,
      name: item.user.name,
      department: item.user.department.name
    }
  })
}

服务器端数据导出实现

通过 API 请求导出

vue实现导出表格数据

exportExcelFromServer() {
  axios({
    url: '/api/export',
    method: 'GET',
    responseType: 'blob'
  }).then(response => {
    const url = window.URL.createObjectURL(new Blob([response.data]))
    const link = document.createElement('a')
    link.href = url
    link.setAttribute('download', '服务器数据.xlsx')
    document.body.appendChild(link)
    link.click()
  })
}

标签: 表格数据
分享给朋友:

相关文章

vue实现数据

vue实现数据

Vue 数据绑定与状态管理 在 Vue 中,数据绑定和状态管理是核心功能,主要通过响应式系统、组件通信和状态管理库实现。 响应式数据绑定 Vue 使用 data 选项声明响应式数据,数据变更会自动触…

vue表格实现单选

vue表格实现单选

实现 Vue 表格单选功能 使用 v-model 绑定选中状态 在表格的每一行添加单选按钮或点击行触发选中,通过 v-model 绑定一个变量存储当前选中行的唯一标识(如 id)。 示例代码:…

用css制作表格

用css制作表格

使用CSS制作表格 基础表格结构 HTML中表格由<table>、<tr>(行)、<th>(表头)和<td>(单元格)组成。基础结构如下: <t…

用vue实现表格

用vue实现表格

Vue 表格实现方法 基础表格实现 使用 Vue 的 v-for 指令可以轻松渲染表格数据。准备一个数据数组,在模板中用 v-for 循环渲染。 <template> <tab…

vue实现表格输出

vue实现表格输出

Vue 实现表格输出的方法 使用原生表格标签 在 Vue 模板中可以直接使用 HTML 原生表格标签(<table>、<tr>、<td>等)渲染数据。通过 v-fo…

vue实现表格滚动

vue实现表格滚动

Vue 实现表格滚动的方法 使用 CSS 固定表头并滚动内容 通过 CSS 设置表格容器的固定高度和 overflow-y: auto,实现内容区域的滚动。表头部分使用 position: stick…