nodejs如何解析excel

在工作中有时候我们需要将数据写入的excel或者将数据输出到excel当中。

这项工作用nodejs借助npm包来完成的话相当快捷。

用nodejs操作excel需要借助一个npm包,包名称为:node-xlsx,包的地址为:https://www.npmjs.com/package/node-xlsx。

下面就给大家演示一下如何用nodejs来操作excel,nodejs操作excel无非读和写。

首先用这个包来读取一个excel文件,excel文件内容如下:

内容很简单就是一个表格。

使用node-xlsx的话我们要先安装,并引入。node-xlsx引入到文件中用一个自定义变量来接收,这个变量上有两个方法,parse和build。

parse就是解析excel的意思,我们先看用nodejs解析上面的表格得到数据的代码如下:

var xlsx = require('node-xlsx').default;
// parse方法的参数为要解析的excel的路径
var list = xlsx.parse('./1234.xlsx');
// 输出数据
console.log(list);

打印结果如下:

我们看到这个结果是一个数组,数组的每一项是一个对象,对象中有如下属性:name、data。

name是excel中文档的名称,这里需要注意,一个excel可以有多个文档如图:

所以上面的list得到的是一个数组。

data表示当前文档下的数据,是一个二维数组,我们将其输出:

可以看到和上面表格中的数据是一样的。只不过这个数据的格式比较特殊,通常第一行为标题行,之后的为实体数据,并以数组的形式存储。

这里需要注意的是如果excel中的表格某个数据为空没有填写如图:

此时读出来的数据如下:

转换成json如下:

这个npm包还是挺人性化的,以上便是用nodejs读取excel文件。

下面来看一下如何用nodejs将数据写入excel,用nodejs将数据写入excel的话,数据必须满足要求才可以,并且这里需要用的nodejs的fs模块。

代码如下:

运行结果会输出到test4.xlsx文件中,结果如下:

从上面的运行结果可以看出,在构建写入的数据的时候,数据必须设置为数组,并且为空的项设置为null,然后按照node-xlsx的接口构建一个buffer数据,最后将buffer数据输出到页面。

拓展一下,下面来看一下下面的表格:

多了一个合并的表头,这样的数据该如何输出呢?代码如下:

以上便是在nodejs中借助node-xlsx操作excel的用法了,下期为大家如何使用浏览器的接口操作excel。

本文分享自微信公众号 - nodejs全栈开发(geekclass)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-11-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏耕耘实录

Kubernetes Dashboard的安装与配置

通过kubeadm快速完成了kubernetes的安装,即可迅速地体验到kubernetes的强大功能。美中不足的是,只能通过命令来查看或操作,没有一个直观且简...

26920
来自专栏web前端教室

前端妹子要十几K工资,老鸟反而不敢提高薪?

现在前端开发新人的简历、学历中的水份非常大。具体表现,能力和学历不符。硕士毕业,但因为是转行而来的,所以计算机、前端的相关基础知识很差,所以就在技能方面注水;2...

18520
来自专栏须臾之余

522还不知道怎么表白吗?——经典设计模式之【观察者模式】

12220
来自专栏IT技术精选文摘

面试题:讲讲Redis主从架构?

单机的 redis,能够承载的 QPS 大概就在上万到几万不等。对于缓存来说,一般都是用来支撑读高并发的。因此架构做成主从(master-slave)架构,一主...

16020
来自专栏猿GG编程

基于注解@Async的SpringBoot异步调用及使用场景

首先要在springboot项目的启动上添加@EnableAsync开启异步监控,自动扫描。没有这个主角儿一切都是扯淡。

36010
来自专栏软测小生

Selenium 4即将发布:每个QA都应该知道的

熟悉Selenium 3.0发布背后故事的人知道,早2013年Selenium团队就放出消息将在圣诞节发布Selenium 3.0,可是,直到2016年Sele...

12830
来自专栏web前端教室

零基础选择前端技术栈的正确方法

你的技术栈很明显是以兴趣为导向的。也就是说,你这个技术栈就算你真学完了,对于你工资的提高,也没有很大的帮助,因为它本身就是偏的。

10040
来自专栏Jerry的SAP技术分享

SAP CRM BOL entity deletion - root node and sub node

版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons)

12350
来自专栏JavaEdge

突破Java面试(23-4) - 再深入Redis Replication的完整执行流程及原理

slave每秒都会上报自己的offset给master,同时master保存每个slave的offset

10520
来自专栏程序源代码

基于ThinkPHP5和Bootstrap的极速后台开发框架

FastAdmin是一款基于ThinkPHP5+Bootstrap的极速后台开发框架。

66740

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励