当前位置:首页 > 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 库实现导出

安装所需依赖

vue实现导出表格数据

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 导出方法

vue实现导出表格数据

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 请求导出

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 的模板语法构建日历表格框架,通过 v-for 循环生成日期单元格。核心是计算当前月份的天数及起始星期位置。 <template>…

vue实现表格复选

vue实现表格复选

Vue实现表格复选的方法 基础实现 在Vue中实现表格复选功能可以通过v-model绑定复选框的状态,结合v-for循环渲染表格数据。以下是一个基础示例: <template> &…

表格制作css

表格制作css

基础表格样式 使用CSS可以轻松地为HTML表格添加样式。以下是一个基础表格的HTML和CSS示例: <table class="basic-table"> <thead>…

怎么制作css表格

怎么制作css表格

使用HTML和CSS创建表格 HTML提供<table>标签用于创建表格结构,CSS用于控制样式。以下是一个基础示例: <table class="styled-table"&g…

vue 数据绑定实现

vue 数据绑定实现

Vue 数据绑定的实现方式 Vue 的数据绑定主要通过响应式系统和模板语法实现,以下是核心方法: 双向数据绑定(v-model) 通过 v-model 指令实现表单元素与数据的双向绑定,自动同步数…

vue实现表格多行修改

vue实现表格多行修改

实现表格多行修改的方法 数据绑定与表格渲染 使用v-model绑定表格数据到Vue实例的data属性。通过v-for循环渲染表格行,并为每行数据添加编辑状态标识。 <template>…