Vue导出Excel文件的四种实现方式

 更新时间:2025年12月19日 08:53:18   作者:悟能不能悟  
文章介绍了四种在Vue.js中导出Excel文件的方法,包括前端使用xlsx库、exceljs,使用现成组件vue-json-excel,以及后端生成,每种方法都有其适用场景和优缺点,推荐根据具体需求选择合适的方法,需要的朋友可以参考下

Vue.js 本身不提供直接导出 Excel 的功能,但可以通过以下几种方式实现:

1.前端导出方案

使用 xlsx 库(推荐)

npm install xlsx
# 或
yarn add xlsx
<template>
  <button @click="exportExcel">导出Excel</button>
</template>

<script>
import * as XLSX from 'xlsx';

export default {
  data() {
    return {
      tableData: [
        { name: '张三', age: 25, city: '北京' },
        { name: '李四', age: 30, city: '上海' }
      ]
    }
  },
  methods: {
    exportExcel() {
      // 创建工作簿
      const wb = XLSX.utils.book_new();
      
      // 创建工作表
      const ws = XLSX.utils.json_to_sheet(this.tableData);
      
      // 将工作表添加到工作簿
      XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');
      
      // 导出文件
      XLSX.writeFile(wb, '用户数据.xlsx');
    }
  }
}
</script>

使用 exceljs(功能更强大)

npm install exceljs
npm install file-saver
import ExcelJS from 'exceljs';
import { saveAs } from 'file-saver';

async exportExcel() {
  const workbook = new ExcelJS.Workbook();
  const worksheet = workbook.addWorksheet('Sheet1');
  
  // 添加表头
  worksheet.columns = [
    { header: '姓名', key: 'name' },
    { header: '年龄', key: 'age' },
    { header: '城市', key: 'city' }
  ];
  
  // 添加数据
  this.tableData.forEach(item => {
    worksheet.addRow(item);
  });
  
  // 保存文件
  const buffer = await workbook.xlsx.writeBuffer();
  const blob = new Blob([buffer], { 
    type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' 
  });
  saveAs(blob, '用户数据.xlsx');
}

2.使用现成组件

vue-json-excel

npm install vue-json-excel
<template>
  <download-excel
    :data="tableData"
    :fields="jsonFields"
    name="用户数据.xlsx"
  >
    <button>导出Excel</button>
  </download-excel>
</template>

<script>
import JsonExcel from 'vue-json-excel';

export default {
  components: {
    'download-excel': JsonExcel
  },
  data() {
    return {
      tableData: [...],
      jsonFields: {
        '姓名': 'name',
        '年龄': 'age',
        '城市': 'city'
      }
    }
  }
}
</script>

3.后端生成方案

如果数据量大或需要复杂格式,建议后端生成:

// 前端调用
exportExcel() {
  axios({
    url: '/api/export/excel',
    method: 'GET',
    responseType: 'blob'  // 重要:接收文件流
  }).then(response => {
    const blob = new Blob([response.data], {
      type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
    });
    const url = window.URL.createObjectURL(blob);
    const link = document.createElement('a');
    link.href = url;
    link.download = 'data.xlsx';
    link.click();
    window.URL.revokeObjectURL(url);
  });
}

4.简单表格导出

exportTable() {
  const table = document.querySelector('#your-table');
  const wb = XLSX.utils.table_to_book(table);
  XLSX.writeFile(wb, '表格数据.xlsx');
}

注意事项

  1. 数据量大时:建议使用后端导出,避免浏览器内存溢出
  2. 格式化处理:日期、数字等特殊格式需要转换
  3. 样式需求:如需复杂样式,建议使用 exceljs
  4. 兼容性:xlsx 库兼容性较好,支持多种格式

推荐方案

  • 简单场景:使用 xlsx 库
  • 需要样式和复杂功能:使用 exceljs
  • 大数据量:后端生成

到此这篇关于Vue导出Excel文件的四种实现方式的文章就介绍到这了,更多相关Vue导出Excel文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue Element前端应用开发之获取后端数据

    Vue Element前端应用开发之获取后端数据

    这篇文章主要介绍了Vue Element前端应用开发之获取后端数据,对vue感兴趣的同学,可以参考下
    2021-05-05
  • 详解如何在Electron中存取本地文件

    详解如何在Electron中存取本地文件

    在Electron 中,存取本地文件,有很多种办法,本文介绍最常用的一种办法, 通过 Electron 框架提供的能力,和 Node.js 的 fs 文件管理模块实现本地文件的存取,需要的小伙伴可以参考下
    2023-11-11
  • vue使用input封装上传文件图片全局组件的示例代码

    vue使用input封装上传文件图片全局组件的示例代码

    实际开发过程中,我们经常遇见需要上传文件图片功能,可以封装一个全局组件来调用,这篇文章给大家介绍vue使用input封装上传文件图片全局组件,感兴趣的朋友跟随小编一起看看吧
    2023-11-11
  • vue实现选项卡小案例

    vue实现选项卡小案例

    这篇文章主要为大家详细介绍了vue实现选项卡小案例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • vue extend+promise封装全局弹窗组件

    vue extend+promise封装全局弹窗组件

    这篇文章主要为大家详细介绍了vue extend+promise封装全局弹窗组件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • vuex 使用文档小结篇

    vuex 使用文档小结篇

    Vuex 是一个专为Vue.js应用程序开发的状态管理模式,集中式存储管理应用的所有组件状态。本文给大家介绍了vuex使用文档,需要的朋友参考下吧
    2018-01-01
  • Vue的条件判断问题及说明

    Vue的条件判断问题及说明

    文章主要介绍了Vue中的v-if、v-else-if和v-else的等这三种指令的使用方法和场景,还对比了v-if和v-show的区别,并提供了实际开发中选择v-if或v-show的的建议
    2026-05-05
  • 在UniApp中实现App与H5页面的跳转及通信的代码示例

    在UniApp中实现App与H5页面的跳转及通信的代码示例

    在移动应用开发中,内嵌 H5 页面或与外部网页交互是常见需求,UniApp 作为跨平台框架,提供了灵活的方式实现 App 与 H5 的跳转和双向通信,本文将详细讲解实现方法,并提供可直接复用的代码示例,需要的朋友可以参考下
    2025-04-04
  • vuex存取值和映射函数使用说明

    vuex存取值和映射函数使用说明

    这篇文章主要介绍了vuex存取值和映射函数使用说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • 利用vue3+threejs仿iView官网大波浪特效实例

    利用vue3+threejs仿iView官网大波浪特效实例

    最近好几个vue项目都是用ivew作为UI框架,所以下面这篇文章主要给大家介绍了关于如何利用vue3 + threejs仿iView官网大波浪特效的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2021-12-12

最新评论