当前位置:首页 > VUE

vue表格实现导出

2026-03-29 02:34:15VUE

Vue 表格导出实现方法

使用 xlsx 库导出 Excel

安装 xlsx 库

npm install xlsx

引入 xlsx 并实现导出功能

import * as XLSX from 'xlsx';

export default {
  methods: {
    exportExcel() {
      const data = this.tableData; // 表格数据
      const ws = XLSX.utils.json_to_sheet(data);
      const wb = XLSX.utils.book_new();
      XLSX.utils.book_append_sheet(wb, ws, "Sheet1");
      XLSX.writeFile(wb, "export.xlsx");
    }
  }
}

使用 FileSaver 实现文件下载

安装 FileSaver

npm install file-saver

结合 xlsx 使用

import { saveAs } from 'file-saver';
import * as XLSX from 'xlsx';

export default {
  methods: {
    exportExcel() {
      const data = this.tableData;
      const ws = XLSX.utils.json_to_sheet(data);
      const wb = XLSX.utils.book_new();
      XLSX.utils.book_append_sheet(wb, ws, "Sheet1");
      const excelBuffer = XLSX.write(wb, { bookType: 'xlsx', type: 'array' });
      const blob = new Blob([excelBuffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
      saveAs(blob, "export.xlsx");
    }
  }
}

导出 CSV 格式

直接使用 JavaScript 实现

export default {
  methods: {
    exportCSV() {
      const data = this.tableData;
      let csvContent = "data:text/csv;charset=utf-8,";

      // 添加表头
      const headers = Object.keys(data[0]);
      csvContent += headers.join(",") + "\r\n";

      // 添加数据行
      data.forEach(row => {
        csvContent += headers.map(header => row[header]).join(",") + "\r\n";
      });

      // 创建下载链接
      const encodedUri = encodeURI(csvContent);
      const link = document.createElement("a");
      link.setAttribute("href", encodedUri);
      link.setAttribute("download", "export.csv");
      document.body.appendChild(link);
      link.click();
    }
  }
}

使用 Element UI 表格导出

针对 Element UI 的表格组件

export default {
  methods: {
    exportElementTable() {
      import('@/vendor/Export2Excel').then(excel => {
        const tHeader = ['列名1', '列名2', '列名3']; // 表头
        const filterVal = ['prop1', 'prop2', 'prop3']; // 表格数据属性
        const data = this.formatJson(filterVal, this.tableData);
        excel.export_json_to_excel({
          header: tHeader,
          data,
          filename: '导出文件',
          autoWidth: true,
          bookType: 'xlsx'
        });
      });
    },
    formatJson(filterVal, jsonData) {
      return jsonData.map(v => filterVal.map(j => v[j]));
    }
  }
}

注意事项

确保表格数据是数组格式,且每个对象具有相同的属性结构

处理中文乱码问题时,可以在导出时指定编码格式

对于大数据量导出,建议分批次处理或使用Web Worker

导出的文件名可以动态生成,如包含当前日期

vue表格实现导出

const fileName = `数据导出_${new Date().toLocaleDateString()}.xlsx`;

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

相关文章

vue实现切换

vue实现切换

Vue 实现切换功能的方法 在 Vue 中实现切换功能可以通过多种方式实现,以下是一些常见的方法: 使用 v-if 和 v-else 指令 通过条件渲染实现切换功能,适用于简单的显示/隐藏场景。…

vue实现ajax

vue实现ajax

Vue 中实现 AJAX 的几种方法 在 Vue 中实现 AJAX 请求可以通过原生 JavaScript 的 XMLHttpRequest、第三方库如 axios 或 fetch API 来完成。以…

vue实现抖动

vue实现抖动

Vue 实现抖动效果 在 Vue 中实现抖动效果可以通过 CSS 动画或 JavaScript 动画库来实现。以下是几种常见的方法: 使用 CSS 动画 通过定义 @keyframes 动画并在 V…

vue 实现搜索

vue 实现搜索

实现 Vue 搜索功能 在 Vue 中实现搜索功能通常涉及以下几个关键步骤: 数据绑定与输入监听 使用 v-model 双向绑定搜索输入框的值,监听用户输入: <template>…

vue首页实现

vue首页实现

实现Vue首页的基本步骤 创建一个Vue首页通常涉及项目初始化、页面结构设计、路由配置和组件开发。以下是具体实现方法: 初始化Vue项目 使用Vue CLI或Vite快速搭建项目结构: npm i…

vue实现menu

vue实现menu

Vue 实现 Menu 的方法 使用 Element UI 的 Menu 组件 Element UI 提供了现成的 Menu 组件,适合快速实现导航菜单。安装 Element UI 后,可以直接使用…