当前位置:首页 > VUE

vue实现表格导出功能

2026-02-25 06:58:23VUE

使用xlsx库实现表格导出

安装xlsx库

npm install xlsx

引入xlsx库

import XLSX from 'xlsx';

准备表格数据

const tableData = [
  { name: '张三', age: 25, gender: '男' },
  { name: '李四', age: 30, gender: '女' }
];

导出Excel文件

exportToExcel() {
  const ws = XLSX.utils.json_to_sheet(this.tableData);
  const wb = XLSX.utils.book_new();
  XLSX.utils.book_append_sheet(wb, ws, "Sheet1");
  XLSX.writeFile(wb, "export.xlsx");
}

使用vue-json-excel插件

安装插件

npm install vue-json-excel

全局注册组件

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

模板中使用

<download-excel 
  :data="tableData"
  :fields="json_fields"
  name="导出数据.xls">
  <button>导出Excel</button>
</download-excel>

定义导出字段

json_fields: {
  '姓名': 'name',
  '年龄': 'age',
  '性别': 'gender'
}

使用html-to-xlsx方案

安装依赖

npm install html-to-xlsx

获取表格HTML

const table = document.getElementById('exportTable');

转换并导出

const htmlToXlsx = require('html-to-xlsx');
htmlToXlsx(table, 'export.xlsx');

自定义CSV导出

实现CSV导出方法

exportToCSV() {
  const 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(",")
  ).join("\n");

  const encodedUri = encodeURI(csvContent + headers + "\n" + rows);
  const link = document.createElement("a");
  link.setAttribute("href", encodedUri);
  link.setAttribute("download", "export.csv");
  document.body.appendChild(link);
  link.click();
}

使用Element UI的表格导出

安装Element UI

npm install element-ui

引入组件

import { Table, TableColumn, Button } from 'element-ui';

表格结构

<el-table :data="tableData" ref="exportTable">
  <el-table-column prop="name" label="姓名"></el-table-column>
  <el-table-column prop="age" label="年龄"></el-table-column>
</el-table>
<el-button @click="exportExcel">导出</el-button>

导出方法

vue实现表格导出功能

exportExcel() {
  import('@/vendor/Export2Excel').then(excel => {
    const tHeader = ['姓名', '年龄'];
    const filterVal = ['name', 'age'];
    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]));
}

标签: 表格功能
分享给朋友:

相关文章

vue实现ping功能

vue实现ping功能

实现Ping功能的思路 在Vue中实现Ping功能通常需要借助浏览器API或后端服务。由于浏览器环境限制,无法直接发送ICMP请求(传统Ping协议),但可通过以下两种方式模拟: HTTP请求模拟P…

vue实现表格读取数据

vue实现表格读取数据

Vue 实现表格数据读取 在 Vue 中实现表格数据读取通常涉及以下关键步骤: 数据绑定与表格渲染 通过 v-for 指令动态渲染表格行,数据通常存储在组件的 data 或 Vuex 状态中:…

vue日历表格实现

vue日历表格实现

实现Vue日历表格的基本步骤 使用Vue实现日历表格需要处理日期数据生成、渲染和交互逻辑。以下是核心实现方法: 安装依赖(可选) 若需复杂功能可引入date-fns或dayjs等日期库: npm…

在vue实现学生表格

在vue实现学生表格

实现学生表格的基本结构 在Vue中实现学生表格需要使用<table>标签结合Vue的数据绑定功能。准备一个数组存储学生数据,通过v-for指令动态渲染表格行。 <template&…

vue实现功能插件

vue实现功能插件

Vue 功能插件实现方法 插件基本结构 Vue 插件通常需要暴露一个 install 方法,该方法接收 Vue 构造函数作为参数。基本结构如下: const MyPlugin = { insta…

vue实现拨号功能

vue实现拨号功能

Vue 实现拨号功能 使用 tel: 协议实现基础拨号 在 Vue 中可以通过 HTML 的 <a> 标签结合 tel: 协议实现拨号功能。这种方式适用于移动端浏览器,点击后会直接调用系统…