vue实现Excel文件的上传与下载功能的两种方式

下面是详细讲解Vue实现Excel文件的上传与下载功能的两种方式的完整攻略。

方式一:使用js-xlsx插件

安装和引入js-xlsx插件

首先,在Vue项目中安装js-xlsx插件。

npm i xlsx

然后,我们需要将js-xlsx插件引入到Vue项目中。

import XLSX from 'xlsx';

实现Excel文件上传功能

在Vue项目中,我们可以使用<input type='file'/>标签来实现文件上传功能。当用户选择文件后,触发事件,调用parseExcelFile方法来读取Excel文件内容。

<template>
  <div>
    <input type="file" @change="parseExcelFile" />
  </div>
</template>
export default {
  methods: {
    parseExcelFile(event) {
      const file = event.target.files[0];
      const reader = new FileReader();
      reader.onload = (e) => {
        const data = e.target.result;
        const workbook = XLSX.read(data, { type: 'binary' });
        const firstSheetName = workbook.SheetNames[0];
        const worksheet = workbook.Sheets[firstSheetName];
        const result = XLSX.utils.sheet_to_json(worksheet, { header: 1 });
        console.log(result); // 打印文件内容
      };
      reader.readAsBinaryString(file);
    },
  },
};

以上代码实现了Excel文件的上传和读取,当用户选择Excel文件后,调用parseExcelFile方法,将Excel文件转为二进制流,再使用js-xlsx插件解析为json格式并打印出来。

实现Excel文件下载功能

在Vue项目中,可以使用js-xlsx插件,将json格式的数据一步步保存为Excel文件,并提供下载链接。

export default {
  methods: {
    downloadExcelFile() {
      const data = [[1, 2], [3, 4]];
      const ws_name = 'SheetJS';

      const wb = XLSX.utils.book_new();
      const ws = XLSX.utils.aoa_to_sheet(data);
      XLSX.utils.book_append_sheet(wb, ws, ws_name);

      const wbout = XLSX.write(wb, { bookType: 'xlsx', type: 'binary' });

      const url = window.URL.createObjectURL(new Blob([s2ab(wbout)], { type: 'application/octet-stream' }));
      const link = document.createElement('a');
      link.style.display = 'none';
      link.href = url;
      link.setAttribute('download', 'example.xlsx');
      document.body.appendChild(link);
      link.click();
      document.body.removeChild(link);
    },
  },
};

function s2ab(s) {
  const buf = new ArrayBuffer(s.length);
  const view = new Uint8Array(buf);
  for (let i = 0; i !== s.length; ++i) view[i] = s.charCodeAt(i) & 0xff;
  return buf;
}

以上代码实现了将数组保存为Excel文件,并提供下载链接的功能。其中,s2ab函数用于将字符串转为二进制数组。

方式二:使用papaparse插件

安装和引入papaparse插件

首先,在Vue项目中安装papaparse插件。

npm i papaparse

然后,我们需要将papaparse插件引入到Vue项目中。

import Papa from 'papaparse';

实现Excel文件上传功能

在Vue项目中,我们可以使用<input type='file'/>标签来实现文件上传功能。当用户选择文件后,触发事件,调用parseExcelFile方法来读取Excel文件内容。

<template>
  <div>
    <input type="file" @change="parseExcelFile" />
  </div>
</template>
export default {
  methods: {
    parseExcelFile(event) {
      const file = event.target.files[0];
      Papa.parse(file, {
        complete: (results) => {
          console.log(results.data); // 打印文件内容
        },
      });
    },
  },
};

以上代码实现了Excel文件的上传和读取,当用户选择Excel文件后,调用Papa.parse方法,将Excel文件转为json格式并打印出来。

实现Excel文件下载功能

在Vue项目中,可以使用papaparse插件,将json格式的数据一步步保存为Excel文件,并提供下载链接。

export default {
  methods: {
    downloadExcelFile() {
      const data = [[1, 'a'], [2, 'b']];
      const csv = Papa.unparse(data);
      const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' });
      const url = URL.createObjectURL(blob);
      const link = document.createElement('a');
      link.style.display = 'none';
      link.href = url;
      link.setAttribute('download', 'example.csv');
      document.body.appendChild(link);
      link.click();
      document.body.removeChild(link);
    },
  },
};

以上代码实现了将数组保存为Excel文件,并提供下载链接的功能。其中,Papa.unparse用于将json格式的数据转化为csv格式的字符串。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue实现Excel文件的上传与下载功能的两种方式 - Python技术站

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

相关文章

  • Vue2.0 vue-source jsonp 跨域请求

    Vue2.0 vue-source jsonp 跨域请求攻略: 一、什么是跨域请求? 当浏览器执行前端代码时,由于同源策略的存在,只能向同一域名下的服务器发出请求,而不能向其他域名下的服务器发出请求。这就是跨域请求。 二、Vue2.0 的 jsonp 请求方法 jsonp 是利用浏览器动态创建标签,通过 src 属性实现跨域请求的方法,Vue2.0 的 vu…

    Vue 2023年5月28日
    00
  • vue实现周日历切换效果

    接下来我会详细讲解如何用vue实现周日历切换效果。 前置知识 在学习如何用vue实现周日历切换效果之前,需要掌握以下技术: HTML基础知识 CSS基础知识 JavaScript基础知识 Vue.js基础知识 实现步骤 步骤一:创建日历组件 我们可以通过vue-cli来创建新的项目,然后使用vue组件创建我们的日历组件。通过组件,我们可以灵活地控制日历的显示…

    Vue 2023年5月29日
    00
  • vue时间组件DatePicker组件的手写示例

    下面是关于“vue时间组件DatePicker组件的手写示例”的完整攻略。 1. 了解DatePicker组件 DatePicker组件是一个常用的时间选择组件。通过DatePicker组件,用户可以自定义时间选择的方式,包括选择年月日、时分秒等。 2. 建立DatePicker组件的基础HTML结构 在进行组件的编写之前,我们需要先建立一个基础HTML结构…

    Vue 2023年5月28日
    00
  • Vue中的常用指令及用法总结

    好的!来让我介绍一下“Vue中的常用指令及用法总结”的完整攻略。 一、Vue中常用指令概览 Vue中常用指令可分为以下几类: 1. 数据绑定 Vue中最常用的指令就是用来实现数据绑定的,主要有以下几个指令。 v-model:用于在表单元素上双向绑定数据。 v-bind:用于绑定一个或多个属性值到指定元素上。 v-once:用于一次性绑定数据,当数据发生改变时…

    Vue 2023年5月27日
    00
  • vue 中filter的多种用法

    下面是一份关于 Vue 中 filter 的多种用法的攻略。 简介 在 Vue 中,filter 是一种非常实用的功能,它可以让我们在模板中格式化数据。例如,在展示日期时,可以使用 Date Filter 将日期格式化为固定的格式,或者在展示价格时,可以使用 Currency Filter 将价格格式化为指定的货币单位。 Vue 中 Filter 的基本用法…

    Vue 2023年5月27日
    00
  • 基于vue-cli3创建libs库的实现方法

    首先,创建一个基于vue-cli3的JavaScript库,需要按照以下步骤进行: 步骤一: 创建项目 使用vue-cli3脚手架创建一个新项目,并选取默认配置(Default、Manually select features、Config files)。 vue create libs-project 步骤二: 配置项目 通过以下命令,在项目根目录下创建v…

    Vue 2023年5月29日
    00
  • vue.js watch经常失效的场景与解决方案

    Vue.js Watch经常失效的场景与解决方案 在使用Vue.js的过程中,watch是非常常用的一个功能,它可以监听数据的变化并实现相应的操作,但是在实际开发中使用watch时可能会出现失效的情况,本文将讲解Watch失效的场景及解决方案。 Watch 失效的场景 深度监听 在Vue.js中,许多组件和工具可以帮助我们在数据更改时实时更新视图。这是通过“…

    Vue 2023年5月29日
    00
  • vue配置多页面的实现方法

    关于Vue配置多页面的实现方法,下面是一个完整的攻略。 1. 安装依赖 在开始前,需要安装vue-loader和vue-template-compiler这两个依赖。 npm install vue-loader vue-template-compiler –save-dev 2. 配置webpack 在webpack配置文件中,需要做如下修改。 在ent…

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