原表格样式;

导入效果:

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 导入文件的更多相关文章

  1. 踩坑,vue项目中,main.js引入scss文件时报错

    当我们在src目录下创建.scss文件,并在main.js中引用,运行时会报: ERROR Failed to compile with 1 errors 5:25:07 PMThis relativ ...

  2. 在vue项目中使用canvas-nest.js,报parameter 1 is not of type 'Element'

    canvas-nest.js是一款轻量的网页特效,如图: github地址:https://github.com/hustcc/canvas-nest.js 在普通的html项目中,只要将<sc ...

  3. vue项目中使用bpmn-流程图xml文件中节点属性转json结构

    内容概述 本系列“vue项目中使用bpmn-xxxx”分为七篇,均为自己使用过程中用到的实例,手工原创,目前陆续更新中.主要包括vue项目中bpmn使用实例.应用技巧.基本知识点总结和需要注意事项,具 ...

  4. vue项目中使用 SheetJS / js-xlsx 导出文件

    1.  npm install xlsx 2. 在App.vue 中引入xlsx import * as XLSX from 'xlsx'; // 数据导出导入所需要的依赖  3.  使用xlsx 3 ...

  5. 在vue项目中的main.js中直接使用element-ui中的Message 消息提示、MessageBox 弹框、Notification 通知

    需求来源:向后台请求数据时后台挂掉了,后台响应就出现错误,不做处理界面就卡住了,这时需要在main.js中使用axios的响应拦截器在出现相应错误是给出提示.项目使用element-ui,就调用里面的 ...

  6. 在vue项目中使用Nprogress.js进度条

    NProgress是一款在网页顶部添加细长进度条的工具,非常轻巧,使用起来也非常便捷,灵感来源于Google, YouTube. 1.安装 $ npm install --save nprogress ...

  7. vue项目中使用md5.js及base64.js

    一.在项目根目录下安装 npm install --save js-base64 npm install --save js-md5 二.在项目文件中引入 import md5 from 'js-md ...

  8. vue项目中,main.js,App.vue,index.html如何调用

    1.main.js是我们的入口文件,主要作用是初始化vue实例,并引入所需要的插件 2.App.vue是我们的主组件,所有页面都是在App.vue下进行切换的.其实你也可以理解为所有的路由也是App. ...

  9. 如何在vue项目中使用md5.js及base64.js

    一.在项目根目录下安装 npm install --save js-base64 npm install --save js-md5 二.在项目文件中引入 import md5 from 'js-md ...

随机推荐

  1. 深入理解java中main方法

    理解main方法语法 深入理解main方法: 解释main方法的形式:public static void main(String[] args){} main方法调用者:虚拟机 java虚拟机需要调 ...

  2. ES2020新特性记录

    1.可选链操作符 // oldlet ret = obj && obj.first && obj.first.second// newlet ret = obj?.fi ...

  3. 使用Google Fonts注意事项

    Google Fonts是一个字体嵌入服务库. 这包括免费和开源字体系列.用于浏览库的交互式 Web 目录以及用于通过 CSS 和 Android 使用字体的 API. Google 字体库中的流行字 ...

  4. CSP2021 翻车记

    DAY - INF 日常模拟赛被吊打,不知道为啥总是出一些小问题导致正解gg,成绩的话也就是中游吧,不过方差不小 DAY - 2 感冒了,头疼得很,签到题甚至也签到失败了,烦得很 DAY -1 全真体 ...

  5. vs2010中使用命令行参数

    使用VS2010增加命令参数的时候老是不起作用,后面经过研究发现,所要增加的命令参数是一个相对文件路径,而默认的工作目录里面没有该文件,所以就没有找到,需要修改工作目录,这样命令行参数才能够起作用.

  6. camera HSYNC:VSYNC

    HSYNC:行锁存,换行信号VSYNC:祯锁存,换页信号 320×240的屏,每一行需要输入320个脉冲来依次移位.锁存进一行的数据,然后来个HSYNC 脉冲换一行:这样依次输入240行之后换行同时来 ...

  7. 更优于 Shellinabox 的 web shell 工具 -- ttyd

    ttyd 是一个运行在服务端,客户端通过web浏览器访问从而连接后台 tty (pts伪终端)接口的程序,把 shell 终端搬到 web 浏览器中. WebSocket WebSocket 是 HT ...

  8. upload-labs通关攻略(全)

    upload-labs通关攻略 upload-labs是练习文件上传很好的一个靶场,建议把upload-labs关卡全部练习一遍 1.下载安装 下载地址 链接:https://pan.baidu.co ...

  9. win10各版本激活码

    win + x进入Power shell(管理员),依次输入 Win10专业版 slmgr.vbs /upk slmgr /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX slmg ...

  10. 在dotnet6发布之际,FastNat内网穿透,给开发人员送的硬货福利

    一.FastNat可为您解决的问题 1.没有公网服务器,但是想发布共享本地的站点或网络程序到公网上,以供他人访问: 此项功能大大方面开发人员进行远程调试,微信小程序等开发工作进行. 2.需要远程到在其 ...