当前位置:首页 > 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 使用

vue表格实现导出

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]));
    }
  }
}

注意事项

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

vue表格实现导出

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

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

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

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

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

相关文章

vue异步组建实现原理

vue异步组建实现原理

Vue 异步组件实现原理 Vue 的异步组件允许将组件按需加载,通常用于代码分割或延迟加载非关键组件。其核心原理基于 Promise 和动态导入。 基本实现方式 通过 defineAsyncComp…

vue实现下载暂停

vue实现下载暂停

Vue实现下载暂停功能 在Vue中实现下载暂停功能,通常需要结合XMLHttpRequest或Fetch API的AbortController来控制请求中断。以下是具体实现方法: 使用XMLHtt…

vue实现markdown

vue实现markdown

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

vue实现签章

vue实现签章

Vue 实现签章功能 签章功能通常包括手写签名、电子印章等。以下是基于 Vue 的实现方法: 使用 canvas 实现手写签名 安装依赖(如需要): npm install signature_p…

vue实现树

vue实现树

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

vue实现首页

vue实现首页

Vue 实现首页的基本步骤 安装 Vue.js 和相关依赖,可以通过 Vue CLI 或 Vite 快速初始化项目。Vue CLI 适合传统项目,Vite 更适合现代前端开发。 npm instal…