vue读取本地xlsx文件
vue读取本地xlsx文件
最近项目中有一个需求,大概就是先上传文件,再将上传文件详情回传到页面显示出来,但是由于表头太多,一个一个对字段显得太繁琐了,所以就找了一个可以直接读取Excel文件的方法。但通过实践后,还是发现调接口来的比较方便,不过无妨,也可以当作学了一种方法了。
在网上搜索发现了一个可以直接用的工具库 js-xlsx
js-xlsx
由 SheetJS 出品的 js-xlsx 是一款非常方便的只需要纯JS即可读取和导出excel的工具库,功能强大,支持格式众多,支持xls、xlsx、ods(一种OpenOffice专有表格文件格式)等十几种格式。本文全部都是以xlsx格式为例。
官方github : https://github.com/SheetJS/js-xlsx
下面就开始我们的示例 :
1、安装npm 包 xlsx
npm install xlsx
创建一个页面 readExcel.vue 用于编写此例子
<template><div><input type="file" ref="upload" accept=".xls,.xlsx" ></div>
</template>
知识点 : 读取excel
读取 excel 主要是通过 XLSX.read(data,{type:type}) 来实现的,返回一个workbook对象,其中 type 的值有
base64 :以base64 方式读取;
binary :BinaryString格式(byte n is data.charCodeAt(n))
string :UTF8编码的字符串
buffer :nodejs Buffer
array :Uint8Array,8位无符号数组;
file :文件的路径(仅nodejs下支持);
JS代码
<script>
// import XLSX from 'xlsx' // 前提是npm xlsx
export default {methods: {readExcel(e) {//表格导入// 引入工具库 import 也可以,前提是已经npm 下来了。var XLSX = require("xlsx");const files = e.target.files;var vali=/\.(xls|xlsx)$/;if(files.length<=0){//如果没有文件名return false;}else if(!vali.test(files[0].name.toLowerCase())){this.$Message.error('上传格式不正确,请上传xls或者xlsx格式');return false;}const fileReader = new FileReader();fileReader.onload = (e) => {try {const data = e.target.result; // data则是我们在excel表中获取的数据const Workbook = XLSX.read(data, { type: 'binary'}); // 通过XLSX读取出来得到了一个 workdata 对象,下面详细介绍 workdata 对象中有些什么this.$refs.upload.value = ''; // 处理完成 清空表单值} catch (e) {return false;}};fileReader.readAsBinaryString(files[0]);}},mounted(){this.$refs.upload.addEventListener('change', e => {//绑定监听表格导入事件this.readExcel(e);})}
}
</script>
Workbook Object 里面有些什么东西呢?
我们先来打印出来看看:
我们主要看看 SheetName 和 Sheets中的结果
可以发现,SheetName 里面保存的是所有 sheet 的名字,然后 Sheets 保存了每个sheet 中的内容(称为 Sheet Object ),每个 sheet 是通过 类型A1 这种键值来保存每个单元格的内容(称为单元格对象 Cell object)
Sheet Object
sheet[ ’ !ref ’ ] : 表示所有单元格的范围,例如这里是A1:D3,就表示A1到D3;
sheet[ !merges] : 存放一些单元格合并信息,为一个数组,每个数组由包含s和e构成的对象组成,s表示开始,e表示结束,r表示行,c表示列;
Cell Object
每一个单元格为一个对象,主要有 t、v、r、h、w等字段;
t :表示内容类型,s表示string类型,n表示number类型,b表示boolean类型,d表示date类型,等等
v : 表示原始值;
f :表示公式,如 B2+ B3;
h :html内容
r : 富文本内容
在上述 我们已经拿到了 Workbook 对象,但是肯定这样是还远远不够的撒,对于这种对象 还需要处理成自己想要 的数据格式才行
let sheetNames = Workbook.SheetNames ;//获取需要数据的表名
let workSheet = Workbook.Sheets[sheetNames]; //workSheet 是该excel表格中的数据
到这一步,大家可能会觉得应该使用遍历来获取数据,确实如此,但是翻阅工具库xlsx 发现提供了便捷方法供我们使用,XLSX.utils ,这里面有很多种格式,我们介绍几种常用的;
XLSX.utils.sheet_to_csv:生成CSV格式
XLSX.utils.sheet_to_txt:生成纯文本格式
XLSX.utils.sheet_to_html:生成HTML格式
XLSX.utils.sheet_to_json:输出JSON格式
到这里使用XLSX.utils 后就能生成我们想要的数据了。
vue读取本地xlsx文件相关推荐
- Vue.js读取本地json文件并分页显示
Vue.js读取本地json文件并分页显示 1.功能实现 通过axios异步加载技术读取本地的json文件内容,并通过vue.js处理数据在h5页面分页显示(这里以3行数据分页) 2.student. ...
- JS读取本地CSV文件数据
JS读取本地CSV文件数据 文件中的部分数据如图 需求是需要提取出文件的数据 使用到的模块是 Papa Parse 1. 依赖安装 yarn add papaparse papaparse的基本使用可 ...
- Echarts读取本地json文件渲染轨迹,亲测ok
Echarts读取本地json文件渲染轨迹,亲测ok 1. 报错及解决 2. 效果图 3. 源码lines-track.html如下 参考 1. 报错及解决 报错:由于浏览器的同源策略 已拦截跨源请求 ...
- android mp3 lrc歌词文件utf-8歌词显示为乱码,Android读取本地json文件的方法(解决显示乱码问题)...
本文实例讲述了Android读取本地json文件的方法.分享给大家供大家参考,具体如下: 1.读取本地JSON ,但是显示汉字乱码 public static String readLocalJson ...
- python播放本地视频_python opencv 读取本地视频文件 修改ffmpeg的方法
Python + opencv 读取视频的三种情况: 情况一:通过摄像头采集视频 情况二:通过本地视频文件获取视频 情况三:通过摄像头录制视频,再读取录制的视频 摄像头采集.本地视频文件的读取.写视频 ...
- java使用poi(XSSFWorkbook)读取excel(.xlsx)文件
其中最主要的区别在于jxl不支持.xlsx,而poi支持.xlsx 这里介绍的使用poi方式(XSSFWorkbook),实际上poi提供了HSSFWorkbook和XSSFWorkbook两个实现类 ...
- Android 读取本地txt文件中的内容
Android 读取本地txt文件中的内容 import java.io.BufferedReader; import java.io.File; import java.io.FileInputSt ...
- html 查看excel表格,html展示excel表格数据-html读取本地excel文件并展示
怎么用html实现excel表格 首先html不能读取本地excel文件 其次就算是javascript 也是不允许的 这是为了安全考虑 如果前端脚本可以读取本地文件 那很不安全 如何将excel上的 ...
- jquery ajax json文件,jQuery ajax读取本地json文件
jQuery ajax读取本地json文件 json文件 { "first":[ {"name":"张三","sex": ...
- JS 变量保存为本地json文件,读取本地json文件为变量
一.变量保存为本地json文件: 第一步:把返回的数据转成json格式 var content = json.stringify(data); 第二步:把转成blob这种格式 ...
最新文章
- ML基石_1_LearningProblem
- centos6.4修改网卡名
- 厉害了,3万字的MySQL精华总结 + 面试100问!
- Modelarts与无感识别技术生态总结(浅出版)
- linux tcp客户端端口号,Linux网络编程--服务器客户端(TCP实现)
- 华为100万部鸿蒙,2019年Q4发布 华为100万部鸿蒙OS手机已开测
- 微软软件基地落户广州
- phpcms上线步骤,无法生成缓存,页面空白原因
- 第二节 数值、字符与字符串
- CTWing-中国电信IoT物联网平台设备接入实战
- LWC 61:741. Cherry Pickup
- js把数字金额转换成中文大写数字
- cocos2d-x开源游戏引擎,C++开发iphone/android/uphone/win32游戏
- 播放视频时过滤播霸浏览器
- Google Colab中把pyth3.7版本更换成python2.7
- 高颜值蓝牙耳机有哪些?音质好颜值高的蓝牙耳机推荐
- av_register_all
- Spring Autowire自动装配 ---残梦追月原创
- 13道字符串笔试题及答案,总有一道你面试会遇上
- 重磅发布!RK3568开发板C应用编程手册