Vue实现导出excel表格功能

下面是Vue实现导出Excel表格的完整攻略:

准备工作

  1. 引入xlsx库,可以通过以下命令安装 npm install xlsx --save
  2. 在Vue项目中新建一个组件用来放置导出Excel的按钮。

示例代码

<template>
  <div>
    <button @click="generateExcel()">导出Excel</button>
  </div>
</template>

Excel数据处理

在生成Excel之前,我们需要对数据进行预处理和格式化,以便于在Excel表格中展现更美观。

1. 安装file-saver库(可选)

使用file-saver库可以在浏览器端直接将数据保存为本地文件,方便用户导出并查看。

npm install file-saver --save

2. 数据格式化

我们需要把要导出的数据按照表格的格式处理成一个js数组对象,例如:

[
  { name: '张三', age: 18, sex: '男' },
  { name: '李四', age: 20, sex: '女' },
  { name: '王五', age: 22, sex: '男' }
]

3. 生成Excel

最后,我们需要使用SheetJS库将处理后的数据生成Excel文件。

import XLSX from 'xlsx';
import FileSaver from 'file-saver';

methods: {
  generateExcel() {
    /* 处理数据 */
    let data = [
      { name: '张三', age: 18, sex: '男' },
      { name: '李四', age: 20, sex: '女' },
      { name: '王五', age: 22, sex: '男' }
    ];
    let ws_name = 'Sheet1';
    let ws_data = [
      ['姓名', '年龄', '性别'],
      ...data.map(item => [item.name, item.age, item.sex])
    ];
    let wb = XLSX.utils.book_new();
    let ws = XLSX.utils.aoa_to_sheet(ws_data);
    XLSX.utils.book_append_sheet(wb, ws, ws_name);
    let wbout = XLSX.write(wb, { bookType: 'xlsx', type: 'binary' });
    let filename = 'example.xlsx';
    FileSaver.saveAs(new Blob([this.s2ab(wbout)], { type: 'application/octet-stream' }), filename);
  },
  s2ab(s) {
    let buf = new ArrayBuffer(s.length);
    let view = new Uint8Array(buf);
    for (let i = 0; i !== s.length; ++i) view[i] = s.charCodeAt(i) & 0xff;
    return buf;
  }
}

示例代码

<template>
  <div>
    <button @click="generateExcel()">导出Excel</button>
  </div>
</template>

<script>
import XLSX from 'xlsx';
import FileSaver from 'file-saver';

export default {
  methods: {
    generateExcel() {
      /* 处理数据 */
      let data = [
        { name: '张三', age: 18, sex: '男' },
        { name: '李四', age: 20, sex: '女' },
        { name: '王五', age: 22, sex: '男' }
      ];
      let ws_name = 'Sheet1';
      let ws_data = [
        ['姓名', '年龄', '性别'],
        ...data.map(item => [item.name, item.age, item.sex])
      ];
      let wb = XLSX.utils.book_new();
      let ws = XLSX.utils.aoa_to_sheet(ws_data);
      XLSX.utils.book_append_sheet(wb, ws, ws_name);
      let wbout = XLSX.write(wb, { bookType: 'xlsx', type: 'binary' });
      let filename = 'example.xlsx';
      FileSaver.saveAs(new Blob([this.s2ab(wbout)], { type: 'application/octet-stream' }), filename);
    },
    s2ab(s) {
      let buf = new ArrayBuffer(s.length);
      let view = new Uint8Array(buf);
      for (let i = 0; i !== s.length; ++i) view[i] = s.charCodeAt(i) & 0xff;
      return buf;
    }
  }
}
</script>

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue实现导出excel表格功能 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • 使用vite创建vue3项目的详细图文教程

    以下是使用vite创建vue3项目的详细攻略: 准备工作 首先确保你已经安装了Node.js环境以及NPM包管理器。 安装vite脚手架工具,运行以下命令: npm install -g create-vite-app 创建项目 创建一个新的Vue3项目,建立一个新的文件夹并进入该文件夹,运行以下命令: create-vite-app my-vue3-pro…

    Vue 2023年5月28日
    00
  • 对vue里函数的调用顺序介绍

    接下来我会详细讲解“对vue里函数的调用顺序介绍”的完整攻略。 1. Vue函数的调用顺序 Vue中的函数调用顺序有如下几种情况: beforeCreate(创建前): 这个阶段会在Vue实例初始化之后,数据观测之前被调用。在此阶段,我们无法访问到 data、computed、methods、watch中的任何属性。 created(创建后): 该阶段在实例…

    Vue 2023年5月28日
    00
  • vue实现Excel文件的上传与下载功能的两种方式

    下面是详细讲解Vue实现Excel文件的上传与下载功能的两种方式的完整攻略。 方式一:使用js-xlsx插件 安装和引入js-xlsx插件 首先,在Vue项目中安装js-xlsx插件。 npm i xlsx 然后,我们需要将js-xlsx插件引入到Vue项目中。 import XLSX from ‘xlsx’; 实现Excel文件上传功能 在Vue项目中,我…

    Vue 2023年5月28日
    00
  • 深入理解Vue transition源码分析

    深入理解Vue transition源码分析 1. 什么是Vue transition? Vue的过渡系统提供了一种为Vue添加CSS类和执行JavaScript钩子的方法。Vue会在插入、更新或删除元素时自动应用过渡效果。过渡可以是简单的CSS过渡,也可以是JS动画,以及混合式的过渡。 Vue的过渡系统是通过Vue的transition组件来实现的。该组件…

    Vue 2023年5月28日
    00
  • vscode vue 文件模板的配置方法

    下面我将对“vscode vue 文件模板的配置方法”进行完整的讲解,包括配置步骤、示例说明等内容。 配置方法 打开 VS Code,点击左侧最后一个 扩展 图标,搜索并安装拓展 Vue VSCode Snippets 在 VS Code 中新建一个 .vue 文件 使用快捷键 Ctrl+Shift+P 或者 Cmd+Shift+P 打开命令面板,输入 Pr…

    Vue 2023年5月28日
    00
  • 使用PDF.js渲染canvas实现预览pdf的效果示例

    PDF.js是一个由Mozilla开发的用于在浏览器中呈现PDF文件的JavaScript库。使用PDF.js可以实现在网页上直接预览PDF文件,而不需要使用插件或者其他额外的软件。下面是使用PDF.js渲染canvas实现预览pdf的效果示例的完整攻略: 步骤一:引入PDF.js 首先,在HTML文件中引入PDF.js文件。可以使用CDN来加速文件的加载,…

    Vue 2023年5月28日
    00
  • 浅谈vue生命周期共有几个阶段?分别是什么?

    当我们使用Vue.js开发应用时,组件会自动地创建、渲染、更新和销毁,这正是Vue.js的生命周期。Vue.js生命周期可以帮助我们了解整个Vue组件的运行过程,这对于开发和调试Vue应用程序非常有帮助。 Vue.js生命周期共有8个阶段,分别是: beforeCreate:组件实例被创建之初,组件属性计算之前,这个阶段的生命周期函数无法访问到组件的属性和方…

    Vue 2023年5月28日
    00
  • 利用Vue3实现一个可以用js调用的组件

    实现一个可通过 JS 调用的 Vue3 组件,需要以下几个步骤: 定义组件: defineComponent 注册组件: createApp().component 渲染组件: createApp().mount 下面是两个示例来说明如何实现。 示例一: 本示例将展示如何通过 JS 调用一个带有参数的组件。 1. 定义组件 import { defineCo…

    Vue 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部