使用Vue实现Excel文件的导入与导出

在现代Web应用中,数据的导入与导出是常见的需求之一。本文将介绍如何在Vue项目中实现Excel文件的导入与导出功能。我们将使用流行的xlsx库来处理Excel文件,并结合file-saver库来实现文件的保存。此外,还会展示如何使用Element UI实现文件上传的用户界面。

安装所需库

首先,需要安装以下库:

  • xlsx:用于读取和写入Excel文件。
  • file-saver:用于在浏览器中保存文件。
  • element-ui:提供友好的文件上传组件。
npm install xlsx file-saver element-ui

在Vue项目中配置Element UI

在你的main.js文件中引入Element UI:

import Vue from 'vue';
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import App from './App.vue';Vue.use(ElementUI);new Vue({render: h => h(App)
}).$mount('#app');

导出Excel文件

使用xlsxfile-saver库,可以方便地在Vue项目中导出Excel文件。下面是一个简单的示例,展示如何导出包含表头和数据的Excel文件。

组件代码
<template><div><el-button type="primary" @click="exportToExcel">导出Excel</el-button></div>
</template><script>
import * as XLSX from 'xlsx';
import { saveAs } from 'file-saver';export default {methods: {exportToExcel() {const data = [{ name: 'John', age: 30, city: 'New York' },{ name: 'Mike', age: 25, city: 'Chicago' },{ name: 'Sara', age: 28, city: 'Los Angeles' }];const headers = ['Name', 'Age', 'City'];const ws_data = [headers, ...data.map(item => [item.name, item.age, item.city])];const ws = XLSX.utils.aoa_to_sheet(ws_data);const wb = XLSX.utils.book_new();XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');const wbout = XLSX.write(wb, { bookType: 'xlsx', type: 'array' });const blob = new Blob([wbout], { type: 'application/octet-stream' });saveAs(blob, 'data.xlsx');}}
};
</script>

导入Excel文件

使用Element UI的文件上传组件和xlsx库,可以实现Excel文件的导入和解析。下面是一个详细的示例,展示如何在Vue项目中读取上传的Excel文件并显示其内容。

组件代码
<template><div><el-uploadaction="":before-upload="handleBeforeUpload":on-change="handleChange":show-file-list="false"><el-button type="primary">点击上传Excel文件</el-button></el-upload><table v-if="headers.length && data.length"><thead><tr><th v-for="(header, index) in headers" :key="index">{{ header }}</th></tr></thead><tbody><tr v-for="(row, index) in data" :key="index"><td v-for="(cell, cellIndex) in row" :key="cellIndex">{{ cell }}</td></tr></tbody></table></div>
</template><script>
import * as XLSX from 'xlsx';export default {data() {return {headers: [],data: []};},methods: {handleBeforeUpload(file) {return false;},handleChange(file) {const reader = new FileReader();reader.onload = (e) => {const data = new Uint8Array(e.target.result);const workbook = XLSX.read(data, { type: 'array' });const firstSheetName = workbook.SheetNames[0];const worksheet = workbook.Sheets[firstSheetName];const jsonData = XLSX.utils.sheet_to_json(worksheet, { header: 1 });this.headers = jsonData[0];this.data = jsonData.slice(1);};reader.readAsArrayBuffer(file.raw);}}
};
</script>

总结

通过结合xlsxfile-saver和Element UI库,可以在Vue项目中方便地实现Excel文件的导入与导出功能。这不仅提升了用户体验,还简化了与Excel数据的交互过程。

  • 导出Excel文件:使用xlsx库生成Excel文件,并使用file-saver库将其保存到用户设备。
  • 导入Excel文件:使用Element UI的文件上传组件获取文件,并使用xlsx库解析Excel文件内容。

这些技术和库的结合使用,为前端开发人员提供了一套强大的工具,用于处理Excel文件的导入与导出需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/32060.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

堆排序的实现原理

一、什么是堆排序&#xff1f; 堆排序就是将待排序元素以一种特定树的结构组合在一起&#xff0c;这种结构被称为堆。 堆又分为大根堆和小根堆&#xff0c;所谓大根堆即为所有的父节点均大于子节点&#xff0c;但兄弟节点之间却没有什么严格的限制&#xff0c;小根堆恰恰相反&a…

Spring注解-@RestControllerAdvice

Spring注解-RestControllerAdvice RestControllerAdvice注解是什么 RestControllerAdvice是一个组合注解,由ControllerAdvice、ResponseBody组成。而ControllerAdvice又是由Component组合。使用RestControllerAdvice可用自定义一个异常处理类。一般配合ExceptionHandler、Init…

高通安卓12-在源码中查找应用的方法

1.通过搜索命令查找app 一般情况下&#xff0c;UI上看到的APP名称会在xml文件里面定义出来&#xff0c;如 搜索名字为WiGig的一个APP 执行命令 sgrep "WiGig" 2>&1|tee 1.log 将所有的搜索到的内容打印到log里面 Log里面会有一段内容 在它的前面是这段内…

Stable Diffusion部署教程,开启你的AI绘图之路

本文环境 系统&#xff1a;Ubuntu 20.04 64位 内存&#xff1a;32G 环境安装 2.1 安装GPU驱动 在英伟达官网根据显卡型号、操作系统、CUDA等查询驱动版本。官网查询链接https://www.nvidia.com/Download/index.aspx?langen-us 注意这里的CUDA版本&#xff0c;如未安装CUD…

CSS动画(动态导航栏)

1.项目简介 一个具有创意的导航菜单不仅能为你的大作业增色&#xff0c;还能展示你的技术实力。本文将分享一系列常用于期末大作业的CSS动画导航效果&#xff0c;这些效果不仅外观酷炫&#xff0c;而且易于实现。我们提供了一键复制的代码&#xff0c;让你能够快速集成到自己的…

掌握ChatGPT:提示工程入门详解

随着人工智能的发展&#xff0c;提示工程成为了使用ChatGPT等语言模型的核心技术。对于初学者&#xff0c;理解和运用提示工程是提高与ChatGPT互动效果的关键。 什么是提示工程&#xff1f; 提示工程是通过设计和优化输入文本&#xff08;提示&#xff09;来引导AI生成特定输出…

破碎的像素地牢探险:游戏分享

软件介绍 《破碎的像素地牢》是开源一款地牢冒险探索类的游戏&#xff0c;融合了日系RPG经典风格&#xff0c;玩家将控制主角进行未知场景的探索。除了经典地牢玩法外&#xff0c;游戏还添加了更多创意内容&#xff0c;如黑屏状态前的挑战性等&#xff0c;使得游戏更加富有挑战…

Vue78-缓存路由组件

一、需求 路由切走的时候&#xff0c;组件会被销毁&#xff0c;路由切回来&#xff0c;组件被挂载&#xff01; 需要&#xff1a;路由切走的时候&#xff0c;组件不会被销毁。 二、代码实现 若是不加include属性&#xff0c;则在<router-view>里面展示的路由&#xff0c…

ubuntu20.04安装配置openMVG+openMVS

安装 主要跟着官方教程逐步安装 openMVG https://github.com/openMVG/openMVG/blob/master/BUILD.md openMVS https://github.com/cdcseacave/openMVS/wiki/Building 注意事项 1. 库版本要求 使用版本&#xff1a; openMVS 2.2.0 openMVG Eigen 3.4.0 OpenCV 4.6.0 Ce…

华为开发者大会:全场景智能操作系统HarmonyOS NEXT

文章目录 一、全场景智能操作系统 - HarmonyOS NEXT1.1 系统特性1.2 关于架构、体验和生态 二、应用案例2.1 蚂蚁mpaas平台的性能表现 三、新版本应用框架发布3.1 新语言发布3.2 新数据库发布3.3 新版本编译器的发布 四、CodeArts和DataArts4.1 CodeArts4.2 DataArts 五、总结 …

高通安卓12-Input子系统

1.Input输入子系统架构 Input Driver(Input设备驱动层)->Input core(输入子系统核心层)->Event handler(事件处理层)->User space(用户空间) 2.getevent获取Input事件的用法 getevent 指令用于获取android系统中 input 输入事件&#xff0c;比如获取按键上报信息、获…

C++实现简单的哈希表

使用除留余数法计算哈希地址&#xff0c;使用拉链法解决哈希冲突&#xff0c;使用模板编程实现value为任意类型&#xff0c;但是key值只能是整型。链表使用CSTL库中的list&#xff0c;实现了一个简单的哈希表。 #include <iostream> #include <vector> #include &l…

Cloudflare 常用操作

一、域名托管到cloudflare 登录cloudflare->添加站点->填写域名(例如阿里云)->继续选择free套餐->继续->保存cloudflare分配的DNS地址->进入阿里云域名管理->进入DNS管理/DNS修改把DNS地址修改为cloudflare分配的两个DNS->保存->回到cloudflare->…

返利系统中的用户行为分析与推荐算法

返利系统中的用户行为分析与推荐算法 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在现代电子商务平台中&#xff0c;返利系统是一种重要的用户激励手段&am…

深入理解Python中的并发与异步的结合使用

​ 在上一篇文章中&#xff0c;我们讨论了异步编程中的性能优化技巧&#xff0c;并简单介绍了trio和curio库。今天&#xff0c;我们将深入探讨如何将并发编程与异步编程结合使用&#xff0c;并详细讲解如何利用trio和curio库优化异步编程中的性能。 文章目录 并发与异步编程的区…

【数据结构与算法】二叉树的性质 详解

在二叉树的第i层上至多有多少个结点。 在二叉树的第 i 层上至多有 2 i − 1 2^{i-1} 2i−1 个结点(i≥1)。 深度为 K的二叉树至多有多少个结点。 深度为 k 的二叉树上至多含 2 k − 1 2^k - 1 2k−1 个结点(k≥1)。 在一颗二叉树中, 其叶子结点数n0和度为二的结点数n2之间…

安装CDH时报错:Parcel 不可用于操作系统分配 RHEL7,原因与解决办法~

报错信息&#xff1a; 解决办法与思路&#xff1a; 1、检查CDH包的后缀名称&#xff0c;Redhat与Centos安装时不需要修改后缀名称&#xff0c;麒麟系统安装时才需要修改。 2、目录里面需要有xxx.parcel xxx.parcel.sha manifest.json 三个文件 缺一不可&#xff08;注&#x…

Transformer预测 | 基于Transformer的锂电池寿命预测(Pytorch,CALCE数据集)

文章目录 文章概述模型描述程序设计参考资料文章概述 Pytorch实现基于Transformer 的锂电池寿命预测,环境为pytorch 1.8.0,pandas 0.24.2 随着充放电次数的增加,锂电池的性能逐渐下降。电池的性能可以用容量来表示,故寿命预测 (RUL) 可以定义如下: SOH(t)=CtC0100%, 其中,…

JQuery 概念、历史、发展、优势-JQuery开发教程

一、JQuery 框架简介 jQuery 是一个 轻量级 JavaScript 库。 jQuery 极大地简化了 JavaScript 编程。 jQuery 很容易学习。 jQuery是一个快速、简洁的JavaScript框架&#xff0c;是继Prototype之后又一个优秀的JavaScript代码库&#xff08;框架&#xff09;于2006年1月由Joh…

@NotBlank、@NotNull、@NotEmpty、@NonNull四者之间的区别

文章目录 NotNullNotEmptyNotBlankNonNull NotNull 1.NotNull&#xff1a;用在基本类型上&#xff0c;不能为null&#xff0c;但可以为空字符串 NotEmpty 2.NotEmpty&#xff1a;用在集合类上&#xff0c;不能为null&#xff0c;并且长度必须大于0 NotBlank 3.NotBlank&am…