vue实现excel表格的导入导出的示例
作者:filter忠实信徒 发布时间:2024-05-10 14:10:22
标签:vue,excel,导入,导出
一、下载xlsx插件
npm i xlsx
二、通过element-ui组件的upload组件上传文件
<el-upload
class="upload-demo"
action //必选参数,上传的地址,这里我们不写地址自定义上传
accept=".xlsx,.xls" //文件类型
:auto-upload="false" //是否在选取文件后立即进行上传
:show-file-list="false" //是否显示已上传文件列表
:on-change="handleChange" //文件状态改变时的钩子,添加文件、上传成功和上传失败时都会被调用
>
<el-button type="primary">选择文件</el-button>
</el-upload>
三、把选择的Excel文件把文件内容转化为二进制
//把二进制文件进行读取
export function readFile(file) {
return new Promise((resolve, reject) => {
// FileReader主要用于将文件内容读入内存,通过一系列异步接口,可以在主线程中访问本地文件.
let reader = new FileReader();
// 异步按字节读取文件内容,结果为文件的二进制串
reader.readAsBinaryString(file);
reader.onload = (ev) => {
resolve(ev.target.result);
};
});
}
四、通过插件中的xlsx.read()读取二进制数据
//选择文件
const handleChange = async function (e) {
const file = e.raw; //选择的文件内容
let data = await readFile(file); //将内容转化为二进制
let workbook = xlsx.read(data, { type: "binary" }); //通过插件读取二进制数据 binary二进制
}
五、通过xlsx.utils.sheet_to_json()把表格一中的数据转化为JSON格式
//表格目录一中的数据
let worksheet = workbook.Sheets[workbook.SheetNames[0]];
//把数据转化为json数据格式
data = xlsx.utils.sheet_to_json(worksheet);
六、把读取的JSON数据转化为可以传递给服务器的数据
//把读取的数据变为最后可以传递给服务器的数据(所在地=>address,学校名称=>shcoolName......)
let arr = [];
data.forEach((item) => {
let obj = {};
for (let key in character) {
// hasOwnProperty() 方法会返回一个布尔值,指示对象自身属性中是否具有指定的属性(也就是,是否有指定的键)
// 即使属性的值是 null 或 undefined,只要属性存在,hasOwnProperty 依旧会返回 true。
// 判断是否有规定的属性没有就终止执行
if (!character.hasOwnProperty(key)) break;
let v = character[key],
text = v.text,
type = v.type;
v = item[text] || "";
//将数据转化为对应的数据类型 不符合的话不做操作
type === "string" ? (v = String(v)) : null;
type === "number" ? (v = Number(v)) : null;
obj[key] = v;
}
arr.push(obj);
});
//给用户一点延迟
await delay(100);
//将导入数据展示到页面中
result.tableData = arr;
导出
// 1.把数据转化为表格名称对应
let arr = result.tableData.map((item) => {
return {
办学层次: item.levels,
备注: item.message,
学校名称: item.schoolName,
所在地: item.address,
};
});
//2.用于将 JSON 数据转换为 Excel 工作表中的单元格数据。
let sheet = xlsx.utils.json_to_sheet(arr);
//3.用于创建一个新的 Excel 工作簿对象它返回一个空白的工作簿,可以向其中添加工作表和单元格数据。
let book = xlsx.utils.book_new();
//4.用于向现有的 Excel 工作簿对象(Workbook)中添加一个新的工作表
// book_append_sheet(wb, sheet, name=None)
//参数wb是要将工作表添加到的 Workbook 对象;sheet 参数是要添加的 Worksheet 对象;name 参数是要为工作表指定的名称(如果未指定,则使用默认名称)
xlsx.utils.book_append_sheet(book, sheet, "sheet1");
//5.用于将 Excel 工作簿下载到本地文件系统中 book要下载的Eceial表格,第二个参数是表格名称
xlsx.writeFile(book, `user${new Date().getTime()}.xls`);
来源:https://juejin.cn/post/7219968440761794621
0
投稿
猜你喜欢
- 目录1.使用说明2.准备3.语法3.1 变量及赋值3.2 入参出参3.3 流程控制-判断3.4 流程控制-循环3.5 流程控制-退出、继续循
- 1 前言很多程序都要求用户输入某种信息,程序一般将信息存储在列表和字典等数据结构中。用户关闭程序时,就需要将信息进行保存,一种简单的方式是使
- 当数据量猛增的时候,大家都会选择库表散列等等方式去优化数据读写速度。笔者做了一个简单的尝试,1亿条数据,分100张表。具体实现过程如下。首先
- I. 前言联邦学习(Federated Learning) 是人工智能的一个新的分支,这项技术是谷歌2016年于论文Communicatio
- Vue 中使用 jQuery 和 Bootstrap 不是特别符合 Vue 原生的写法,但是有时候又要用,所以放上我的引入设置,供大家参考。
- 前言删除数据表的时候,表的定义和表中所有的数据均会被删除。因此,在进行删除操作前,最好对表中的数据做一个备份,以免造成无法挽回的后果。mys
- Oracle物理结构故障是指构成数据库的各个物理文件损坏而导致的各种数据库故障。这些故障可能是由于硬件故障造成的,也可能是人为误操作而引起。
- 本文通过一个实际的散点图案例,展示了如何使用pyqt5嵌套一个pyecharts图层的方法,通过这个技巧,可以在pyqt5的框架中也实现精美
- 在IE下测试,发现最大值是:18014398509481984(0x40000000000000)另外发现一个奇怪的问题:JS世界居然不存在
- breakbreak可以用来立即退出循环语句(包括else)continuecontinue可以用来跳过当次循环注意:break和conti
- 背景在上篇文章,我们系统地学习了where 1=1 相关的知识点,大家可以回看《MySQL中where 1=1方法的使用
- 当程序中包含多个线程时,CPU 不是一直被特定的线程霸占,而是轮流执行各个线程。那么,CPU 在轮换执行线程的过程中,即从创建到消亡的整个过
- 1. 路由概念路由的本质就是一种对应关系,根据不同的URL请求,返回对应不同的资源。那么url地址和真实的资源之间就有一种对应的关系,就是路
- 本文实例为大家分享了python版DDOS攻击脚本,供大家参考,具体内容如下于是就找到了我之前收藏的一篇python的文章,是关于ddos攻
- ??本文核心:setup()概念、 reactive()的使用【前言】vue3作为vue2的升级版,有着很多的新特性,其中就包括了组合式AP
- 如下所示:# -*- coding: utf-8 -*-# @Time : 2018/5/17 15:05# @Author :
- 1.<script language="javascript"> var str = "ajfhs
- 1.在 utils 文件中新建 mcaptcha.js 文件,写入以下代码:module.exports = class Mcaptcha
- 本文实例为大家分享了python机器学习实现决策树的具体代码,供大家参考,具体内容如下# -*- coding: utf-8 -*-&quo
- 如果你的Pycharm提示过期可以使用下面这个最新的Pycharm激活码,适用最新版的Pycharm 2020.2.3,老版本的Pychar