博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
前端读取excel文件
阅读量:7079 次
发布时间:2019-06-28

本文共 1947 字,大约阅读时间需要 6 分钟。

由html5的FileReader这个对象来完成

FileReader接口的方法:

readAsBinaryString               file             将文件读取为二进制编码readAsText                      file,[encoding]   将文件读取为文本,其中第二个参数是文本的编码方式,默认值为 UTF-8readAsDataURL                    file             将文件读取为DataURLabort                            (none)           中断读取操作(无论读取成功或失败,方法并不会返回读取结果,这一结果存储在result属性中)复制代码

相关事件:

onabort                               中断onerror                               出错onloadstart                        开始onprogress                          正在读取onload                                成功读取onloadend                           读取完成,无论成功失败复制代码

核心代码:

var reader = new FileReader(); //读取操作就是由它完成.      reader.readAsBinaryString(file);//读取文件的内容,也可以读取文件的URL      reader.onload = function (evt) {               //当读取完成后回调这个函数,然后此时文件的内容存储到了result中,直接操作即可               var data = evt.target.result,      }复制代码

在上传文件之前,我们拿到文件内容,使用js-xlsx,来读取文件内容 npm install js-xlsx 在文件中,

var XLSX = require('xlsx');var workbook = XLSX.read(data, {                    type: 'binary'                }), // 以二进制流方式读取得到整份excel表格对象复制代码

在reader.onload函数中

reader.onload = function (evt) {      //当读取完成后回调这个函数,然后此时文件的内容存储到了result中,直接操作即可      try {        var data = evt.target.result,            workbook = XLSX.read(data, {                type: 'binary'            }), // 以二进制流方式读取得到整份excel表格对象            buildings = []; // 存储获取到的数据            var fromTo = '';           // 遍历每张表读取            for (var sheet in workbook.Sheets) {                if (workbook.Sheets.hasOwnProperty(sheet)) {                    fromTo = workbook.Sheets[sheet]['!ref'];                    buildings = buildings.concat(XLSX.utils.sheet_to_json(workbook.Sheets[sheet]));                    // break; // 如果只取第一张sheet表,就取消注释这行                }            }            let fileRows = buildings.length - 1;//表格内容行数,减去表头的一行               } catch (e) {        console.log('文件类型不正确',e);        return;    }  }复制代码

代码中workbook对象可以获取到文件的详细信息

转载地址:http://nbvml.baihongyu.com/

你可能感兴趣的文章
jQuery 2.0.3 源码分析 回溯魔法 end()和pushStack()
查看>>
新随笔
查看>>
2.11. show log
查看>>
[LeetCode] Alien Dictionary 另类字典
查看>>
Android 实时视频编码—H.264硬编码
查看>>
使用ABP EntityFramework连接MySQL数据库
查看>>
NSubstitute完全手册(十七)参数匹配器上的操作
查看>>
Python 深究readline()
查看>>
摄像机标定(Camera calibration)笔记
查看>>
[LeetCode] Word Frequency 单词频率
查看>>
使用Entity Framework和WCF Ria Services开发SilverLight之6:查找指定字段
查看>>
MVC最为标准的添加操作(从实体验证到实体入库)
查看>>
SpringBoot启动流程简析(二)
查看>>
AspSpider再次开放asp.net2.0 免费空间注册
查看>>
[LeetCode] Boundary of Binary Tree 二叉树的边界
查看>>
C#开发微信门户及应用(19)-微信企业号的消息发送(文本、图片、文件、语音、视频、图文消息等)...
查看>>
C#中进行单元测试
查看>>
ZOJ1051 A New Growth Industry
查看>>
Android中文API(115)——AudioFormat
查看>>
使用java调用fastDFS客户端进行静态资源文件上传
查看>>