当前位置:首页 > VUE

vue实现导出数据

2026-03-29 05:19:08VUE

使用 xlsx 库导出 Excel 数据

安装 xlsx 库:

npm install xlsx

在 Vue 组件中引入并使用:

import * as XLSX from 'xlsx';

methods: {
  exportToExcel() {
    const data = [
      ['Name', 'Age', 'Email'],
      ['John', 25, 'john@example.com'],
      ['Jane', 30, 'jane@example.com']
    ];

    const ws = XLSX.utils.aoa_to_sheet(data);
    const wb = XLSX.utils.book_new();
    XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');
    XLSX.writeFile(wb, 'exported_data.xlsx');
  }
}

使用 file-saverxlsx 导出

安装依赖:

npm install file-saver xlsx

实现代码:

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

methods: {
  exportData() {
    const data = this.tableData; // 假设这是要导出的数据
    const worksheet = XLSX.utils.json_to_sheet(data);
    const workbook = { Sheets: { 'data': worksheet }, SheetNames: ['data'] };
    const excelBuffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });
    const blob = new Blob([excelBuffer], {type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'});
    saveAs(blob, 'data_export.xlsx');
  }
}

导出 CSV 格式数据

简单实现方法:

methods: {
  exportToCSV() {
    const data = [
      ['Name', 'Age', 'Email'],
      ['John', 25, 'john@example.com'],
      ['Jane', 30, 'jane@example.com']
    ];

    let csvContent = data.map(row => row.join(',')).join('\n');
    const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });
    const link = document.createElement('a');
    link.href = URL.createObjectURL(blob);
    link.setAttribute('download', 'export.csv');
    document.body.appendChild(link);
    link.click();
    document.body.removeChild(link);
  }
}

使用 Element UI 的表格导出功能

如果使用 Element UI,可以利用其内置方法:

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

导出 PDF 格式

安装 html2canvasjspdf

npm install html2canvas jspdf

实现代码:

vue实现导出数据

import html2canvas from 'html2canvas';
import jsPDF from 'jspdf';

methods: {
  exportToPDF() {
    const element = document.getElementById('pdf-content');
    html2canvas(element).then(canvas => {
      const imgData = canvas.toDataURL('image/png');
      const pdf = new jsPDF();
      pdf.addImage(imgData, 'PNG', 0, 0);
      pdf.save('export.pdf');
    });
  }
}

注意事项

确保导出的数据已经正确处理,特别是日期格式和特殊字符 大数据量导出时考虑分片处理,避免浏览器内存问题 前端导出适合中小数据量,大数据量建议后端生成文件提供下载链接

标签: 数据vue
分享给朋友:

相关文章

vue实现picker

vue实现picker

Vue 实现 Picker 组件的方法 在 Vue 中实现 Picker 组件可以通过多种方式完成,以下是几种常见的实现方法: 使用原生 HTML 和 CSS 实现 通过 Vue 的模板和样式绑定,…

vue 组件实现

vue 组件实现

Vue 组件实现方法 单文件组件 (SFC) 使用 .vue 文件格式,包含模板、脚本和样式三部分: <template> <div class="example">{{…

vue 实现登录

vue 实现登录

Vue 实现登录功能 创建登录表单组件 在 Vue 项目中创建一个登录表单组件(如 Login.vue),包含用户名和密码输入框以及提交按钮。使用 v-model 实现双向数据绑定。 <tem…

vue实现反馈

vue实现反馈

Vue 实现反馈功能的方法 在 Vue 中实现反馈功能可以通过多种方式,包括弹窗提示、Toast 消息、表单提交等。以下是几种常见的实现方法。 弹窗反馈 使用 Vue 的组件化特性创建一个弹窗组件,…

vue实现slidedown

vue实现slidedown

Vue 实现 SlideDown 动画效果 在 Vue 中实现 SlideDown 效果可以通过 CSS 过渡或动画结合 Vue 的过渡系统完成。以下是几种常见方法: 使用 Vue Transiti…

vue实现指引

vue实现指引

Vue 实现指引功能 Vue 中实现指引功能可以通过多种方式完成,常见的有使用第三方库或自定义实现。以下是几种常见方法: 使用第三方库(如 driver.js) 安装 driver.js: np…