vue项目中使用 SheetJS / js-xlsx 导入文件
原表格样式;
导入效果:
1. 安装
npm install xlsx
2. 在App.vue 中引入xlsx
import * as XLSX from 'xlsx'; // 数据导出导入所需要的依赖
<input> 标签用于搜集用户信息。根据不同的 type 属性值,输入字段拥有很多种形式。输入字段可以是文本字段、复选框、掩码后的文本控件、单选按钮、按钮等等。
<input> 导入文件后返回一个FileList对象:https://www.mifengjc.com/api/FileList.html
event使用方法介绍: https://www.jianshu.com/p/9fbf0703e502 、 https://segmentfault.com/q/1010000015312323
3. 使用
https://docs.sheetjs.com/#parsing-options
https://github.com/rockboom/SheetJS-docs-zh-CN#utilities
// 读取表格文件
readExcel(e) {
let that = this;
const files = e.target.files;
console.log("files:", files);
that.upload_file = files[0].name;
console.log('that.upload_file:', that.upload_file); /**
* https://developer.mozilla.org/zh-CN/docs/Web/API/FileReader
*
* FileReader 对象允许Web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用 File 或 Blob 对象指定要读取的文件或数据。
* 其中File对象可以是来自用户在一个<input>元素上选择文件后返回的FileList对象,也可以来自拖放操作生成的 DataTransfer对象,
* 还可以是来自在一个HTMLCanvasElement上执行mozGetAsFile()方法后返回结果。
* 重要提示: FileReader仅用于以安全的方式从用户(远程)系统读取文件内容 它不能用于从文件系统中按路径名简单地读取文件。
* 要在JavaScript中按路径名读取文件,应使用标准Ajax解决方案进行服务器端文件读取,如果读取跨域,则使用CORS权限。
* */
const fileReader = new FileReader();
/**
* https://developer.mozilla.org/zh-CN/docs/Web/API/FileReader/onload
*
* FileReader.onload
* 处理load (en-US)事件。该事件在读取操作完成时触发。
* */
fileReader.onload = function(event) {
const data = event.target.result;
const workbook = XLSX.read(data, {type: "array"}); //XLSX.read(data, read_opts) attempts to parse data
const wsname = workbook.SheetNames[0]; //取第一张表
const ws = XLSX.utils.sheet_to_json(workbook.Sheets[wsname]); //生成json表格内容
console.log(ws);
}
/* https://developer.mozilla.org/zh-CN/docs/Web/API/FileReader/readAsArrayBuffer */
fileReader.readAsArrayBuffer(files[0]);
}
全部代码:
<template>
<div>
<div>
{{ upload_file || "导入" }}
<input type="file" accept=".xls,.xlsx" @change="readExcel($event)" />
</div>
</div>
</template> <script>
import * as XLSX from 'xlsx'; // 数据导出导入所需要的依赖
export default {
name: 'app',
data() {
return {
upload_file: ''
}
},
methods: {
/**
* https://docs.sheetjs.com/#parsing-options
* Parsing Workbooks
* Browser file upload form element (click to show)
*
* https://github.com/rockboom/SheetJS-docs-zh-CN#utilities
* https://zhuanlan.zhihu.com/p/114607174
* https://blog.csdn.net/a736755244/article/details/99568133
* */
readExcel(e) {
// 读取表格文件
let that = this;
const files = e.target.files;
console.log("files:", files);
that.upload_file = files[0].name;
console.log('that.upload_file:', that.upload_file); /**
* https://developer.mozilla.org/zh-CN/docs/Web/API/FileReader
*
* FileReader 对象允许Web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用 File 或 Blob 对象指定要读取的文件或数据。
* 其中File对象可以是来自用户在一个<input>元素上选择文件后返回的FileList对象,也可以来自拖放操作生成的 DataTransfer对象,
* 还可以是来自在一个HTMLCanvasElement上执行mozGetAsFile()方法后返回结果。
* 重要提示: FileReader仅用于以安全的方式从用户(远程)系统读取文件内容 它不能用于从文件系统中按路径名简单地读取文件。
* 要在JavaScript中按路径名读取文件,应使用标准Ajax解决方案进行服务器端文件读取,如果读取跨域,则使用CORS权限。
* */
const fileReader = new FileReader();
/**
* https://developer.mozilla.org/zh-CN/docs/Web/API/FileReader/onload
*
* FileReader.onload
* 处理load (en-US)事件。该事件在读取操作完成时触发。
* */
fileReader.onload = function(event) {
const data = event.target.result;
const workbook = XLSX.read(data, {type: "array"}); //XLSX.read(data, read_opts) attempts to parse data
const wsname = workbook.SheetNames[0]; //取第一张表
const ws = XLSX.utils.sheet_to_json(workbook.Sheets[wsname]); //生成json表格内容
console.log(ws);
}
/* https://developer.mozilla.org/zh-CN/docs/Web/API/FileReader/readAsArrayBuffer */
fileReader.readAsArrayBuffer(files[0]);
}
}
}
</script> <style>
</style>
参考链接:
[1]https://zhuanlan.zhihu.com/p/114607174
[2] https://github.com/rockboom/SheetJS-docs-zh-CN#utilities
[3] https://docs.sheetjs.com/#parsing-options
[4]https://developer.mozilla.org/zh-CN/docs/Web/API/FileReader
vue项目中使用 SheetJS / js-xlsx 导入文件的更多相关文章
- 踩坑,vue项目中,main.js引入scss文件时报错
当我们在src目录下创建.scss文件,并在main.js中引用,运行时会报: ERROR Failed to compile with 1 errors 5:25:07 PMThis relativ ...
- 在vue项目中使用canvas-nest.js,报parameter 1 is not of type 'Element'
canvas-nest.js是一款轻量的网页特效,如图: github地址:https://github.com/hustcc/canvas-nest.js 在普通的html项目中,只要将<sc ...
- vue项目中使用bpmn-流程图xml文件中节点属性转json结构
内容概述 本系列“vue项目中使用bpmn-xxxx”分为七篇,均为自己使用过程中用到的实例,手工原创,目前陆续更新中.主要包括vue项目中bpmn使用实例.应用技巧.基本知识点总结和需要注意事项,具 ...
- vue项目中使用 SheetJS / js-xlsx 导出文件
1. npm install xlsx 2. 在App.vue 中引入xlsx import * as XLSX from 'xlsx'; // 数据导出导入所需要的依赖 3. 使用xlsx 3 ...
- 在vue项目中的main.js中直接使用element-ui中的Message 消息提示、MessageBox 弹框、Notification 通知
需求来源:向后台请求数据时后台挂掉了,后台响应就出现错误,不做处理界面就卡住了,这时需要在main.js中使用axios的响应拦截器在出现相应错误是给出提示.项目使用element-ui,就调用里面的 ...
- 在vue项目中使用Nprogress.js进度条
NProgress是一款在网页顶部添加细长进度条的工具,非常轻巧,使用起来也非常便捷,灵感来源于Google, YouTube. 1.安装 $ npm install --save nprogress ...
- vue项目中使用md5.js及base64.js
一.在项目根目录下安装 npm install --save js-base64 npm install --save js-md5 二.在项目文件中引入 import md5 from 'js-md ...
- vue项目中,main.js,App.vue,index.html如何调用
1.main.js是我们的入口文件,主要作用是初始化vue实例,并引入所需要的插件 2.App.vue是我们的主组件,所有页面都是在App.vue下进行切换的.其实你也可以理解为所有的路由也是App. ...
- 如何在vue项目中使用md5.js及base64.js
一.在项目根目录下安装 npm install --save js-base64 npm install --save js-md5 二.在项目文件中引入 import md5 from 'js-md ...
随机推荐
- JSP(java server pages)安装开发和执行环境
JSP是一种动态网页技术标准. 它是在传统的网页HTML文件中插入Java程序段(Scriptlet)和JSP标记(tag)的.jsp文件: java程序段:操纵数据库,重新定向网页,发送email等 ...
- BUAA_2020_软件工程_提问回顾与总结
项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任建) 这个作业的要求在哪里 提问回顾与总结作业要求 我在这个课程的目标 了解软件工程的技术,掌握工程化开发的能力 这个作业在哪 ...
- ASP.NET WEBAPI 跨域请求 405错误
浏览器报错 本来没有报这个错,当我在ajax中添加了请求头信息时报错 405的报错大概就是后端程序没有允许此次请求,要解决这个问题,就是在后端程序中允许请求通过.具体操作就是修改web.config配 ...
- 输出单层结点 牛客网 程序员面试金典 C++ Python
输出单层结点 牛客网 程序员面试金典 C++ Python 题目描述 对于一棵二叉树,请设计一个算法,创建含有某一深度上所有结点的链表. 给定二叉树的根结点指针TreeNode* root,以及链表上 ...
- Python学习笔记总结
目录 Python学习笔记总结 前言 安装 数据类型 Hello,World 变量 字符串 首字母大写 全部小写 全部大写 Tab和换行符 格式化 去除空格 List列表 列表增删改查排序 遍历列表 ...
- notepad++ 替换回车换行
以" | "为分隔符,换行 结果如下图:
- vim 脚本,自动添加文件头部信息
相信很多人编写脚本的时候都会在脚本头部写一些信息,记录文件生成时候,生成人姓名等 建议在自己的家目录下的 .vimrc 文件 下添加以下内容 [ autocmd BufNewFile *.sh exe ...
- SpringCloud微服务实战——搭建企业级开发框架(十四):集成Sentinel高可用流量管理框架【限流】
Sentinel 是面向分布式服务架构的高可用流量防护组件,主要以流量为切入点,从限流.流量整形.熔断降级.系统负载保护.热点防护等多个维度来帮助开发者保障微服务的稳定性. Sentinel 具有 ...
- GitHub上 README 增加图片标签
hey Guys~ 你可能遇到的GitHub上好的项目都有一个非常棒的README,其中不乏用到一些非常好看的标签.比如下面这样: walle fastjson 那我们怎样自己添加一个高大上图片标签呢 ...
- SpringBoot 整合thymeleaf
1.Thymeleaf介绍(官网推荐:https://www.thymeleaf.org/doc/articles/thymeleaf3migration.html) Thymeleaf是跟Veloc ...