nodejs使用node-xlsx生成excel的方法示例


Posted in NodeJs onAugust 22, 2019

## 使用nodejs中node-xlsx库进行excel的生成操作 ##

近日,应领导要求,从网上抓了一大批数据存入了数据库,可是妈妈批 ,市场妹子要的是excel表格啊,毕竟妹子的话还是要听的(关键人家语气蛮好的),就从网上查一些资料。可是查来查去发现很多都是复制粘贴,说实话真的讨厌这样行为,代码好歹你自己先跑跑,加点注释,有些人的代码你确定你自己跑过? 就发到网上坑人,各种耽误别人的时间。

nodejs中生成excel的库很多,在尝试后,个人认为对于简单的需求(按行添加),使用node-xlsx就足够了。

1.因为属于第三方模块,所以肯定要npm一下,然后引入。

npm install node-xlsx;
npm install fs

2.在代码中引入模块;

const xlsx = require('node-xlsx')//引入模块
import * as fs from 'fs'

3.下面上关键代码;

数据填充
  sqlite.queryData("select * from personInfo",(rows)=>{
   //rows是个从数据库里面读出来的数组,大家就把他当成一个普通的数组就ok
   let data = [] // 其实最后就是把这个数组写入excel 
   let title = ['id','name','address','fansCount','tag','label','price0','price1']//这是第一行 俗称列名 
   data.push(title) // 添加完列名 下面就是添加真正的内容了
   rows.forEach((element) => {
    let arrInner = []
    arrInner.push(element.id)
    arrInner.push(element.name)
    arrInner.push(element.address)
    arrInner.push(element.fansCount)
    arrInner.push(element.tag)
    arrInner.push(element.label)
    arrInner.push(element.price0)
    arrInner.push(element.price1)
    data.push(arrInner)//data中添加的要是数组,可以将对象的值分解添加进数组,例如:['1','name','上海']
   });
   this.writeXls(data)
  })
  
 
先说一下title 这个数组就是excel中的第一行数据,就是列名,用来描述的。算了,我还是上图解释吧
![就是表头]

nodejs使用node-xlsx生成excel的方法示例

表头完了,下面插入数据,

简单的解释,这个data是个二维数组,它里面的每个数组代表着一行的数据,所以大家添加的时候一定要对应上。添加的每个数组长度要相同(data中一定要添加数组啊,切记)  

你添加了几个数组,在生成的excel中内容就会有多少行的数据,假如我上面的rows数组长度是3那么我生成的excel中内容的数据就是三行(说到这里大家明白了吗,表述不行,急死我了)。  

当我们把data填充数据填充完毕后,就开始下一步,进行excel的生成。

2.生成excel

private writeXls(datas) {
 let buffer = xlsx.build([
  {
   name:'sheet1',
   data:datas
  }
 ]);
 fs.writeFileSync('./the_content.xlsx',buffer,{'flag':'w'});//生成excel the_content是excel的名字,大家可以随意命名
}
这些都是api,相信也没什么好说的了,这就是简单的生成excel的操作了

备注:

这是nodejs操作文件,可能有些不熟悉的会入坑,nodejs是个后台系统,他是有权限修改文件的,不像浏览器,浏览器是无权默认修改文件的,你想想你正在打开浏览器,它就把你的电脑里的内容都修改没了,或者偷偷上传这是多么可怕的事情,所以浏览器的功能还是被限制了很多很多的,以前做安卓生成这些也是麻烦的很,现在真的该感谢一下nodejs用的很爽。喜欢的话,请点赞评论哦 ,作者真正意义的第一篇博客。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

NodeJs 相关文章推荐
nodejs中转换URL字符串与查询字符串详解
Nov 26 NodeJs
NodeJS的Promise的用法解析
May 05 NodeJs
Nodejs 发送Post请求功能(发短信验证码例子)
Feb 09 NodeJs
Mac 安装 nodejs方法(图文详细步骤)
Oct 30 NodeJs
使用nodejs+express实现简单的文件上传功能
Dec 27 NodeJs
nodejs实现OAuth2.0授权服务认证
Dec 27 NodeJs
nodejs express配置自签名https服务器的方法
May 22 NodeJs
nodejs require js文件入口,在package.json中指定默认入口main方法
Oct 10 NodeJs
详解nodejs解压版安装和配置(带有搭建前端项目脚手架)
Dec 06 NodeJs
nodejs基础之多进程实例详解
Dec 27 NodeJs
nodejs中各种加密算法的实现详解
Jul 11 NodeJs
NodeJs crypto加密制作token的实现代码
Nov 15 NodeJs
Nodejs libuv运行原理详解
Aug 21 #NodeJs
nodejs和react实现即时通讯简易聊天室功能
Aug 21 #NodeJs
Nodejs 识别图片类型的方法
Aug 15 #NodeJs
NodeJs实现简易WEB上传下载服务器
Aug 10 #NodeJs
NodeJs 实现简单WebSocket即时通讯的示例代码
Aug 05 #NodeJs
Nodejs监听日志文件的变化的过程解析
Aug 04 #NodeJs
nodejs对项目下所有空文件夹创建gitkeep的方法
Aug 02 #NodeJs
You might like
Protoss热键控制
2020/03/14 星际争霸
DOTA2 探索永无止境 玩家自创强悍插眼攻略
2020/04/20 DOTA
php实例分享之html转为rtf格式
2014/06/02 PHP
php开启与关闭错误提示适用于没有修改php.ini的权限
2014/10/16 PHP
php单一接口的实现方法
2015/06/20 PHP
php中session_id()函数详细介绍,会话id生成过程及session id长度
2015/09/23 PHP
WordPress开发中短代码的实现及相关函数使用技巧
2016/01/05 PHP
php项目开发中用到的快速排序算法分析
2016/06/25 PHP
PHP高效获取远程图片尺寸和大小的实现方法
2017/10/20 PHP
爱恋千雪-US-AscII加密解密工具(网页加密)下载
2007/06/06 Javascript
javascript实现控制文字大中小显示
2015/04/28 Javascript
js实现具有高亮显示效果的多级菜单代码
2015/09/01 Javascript
基于HTML5上使用iScroll实现下拉刷新,上拉加载更多
2016/05/21 Javascript
关于JavaScript数组你所不知道的3件事
2016/08/24 Javascript
JS字符串长度判断,超出进行自动截取的实例(支持中文)
2017/03/06 Javascript
jQuery.ajax向后台传递数组问题的解决方法
2017/05/12 jQuery
微信小程序textarea层级过高(盖住其他元素)问题的解决办法
2019/03/04 Javascript
Vue使用轮询定时发送请求代码
2020/08/10 Javascript
python3抓取中文网页的方法
2015/07/28 Python
Python中循环引用(import)失败的解决方法
2018/04/22 Python
python将字符串以utf-8格式保存在txt文件中的方法
2018/10/30 Python
python通过ffmgep从视频中抽帧的方法
2018/12/05 Python
pandas和spark dataframe互相转换实例详解
2020/02/18 Python
Python flask框架如何显示图像到web页面
2020/06/03 Python
详解CSS3 filter:drop-shadow滤镜与box-shadow区别与应用
2020/08/24 HTML / CSS
详解HTML5常用的语义化标签
2019/09/27 HTML / CSS
印度和世界各地的精美产品:Ikka Dukka
2018/02/12 全球购物
在线吉他课程,学习如何弹吉他:Fender Play
2019/02/28 全球购物
文员岗位职责
2013/11/09 职场文书
计算机专业毕业生自我鉴定
2014/01/16 职场文书
个人剖析材料及整改措施
2014/10/07 职场文书
项目经理岗位职责
2015/01/31 职场文书
青年教师听课心得体会
2016/01/15 职场文书
深入详解JS函数的柯里化
2021/06/09 Javascript
教你利用Nginx 服务搭建子域环境提升二维地图加载性能的步骤
2021/09/25 Servers
CSS link与@import的区别和用法解析
2023/05/07 HTML / CSS