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 相关文章推荐
基于promise.js实现nodejs的promises库
Jul 06 NodeJs
Google官方支持的NodeJS访问API,提供后台登录授权
Jul 29 NodeJs
NodeJs——入门必看攻略
Jun 27 NodeJs
Nodejs从有门道无门菜鸟起飞必看教程
Jul 20 NodeJs
简单实现nodejs上传功能
Jan 14 NodeJs
Nodejs高扩展性的模板引擎 functmpl简介
Feb 13 NodeJs
详解nodejs微信公众号开发——4.自动回复各种消息
Apr 11 NodeJs
nodejs基于mssql模块连接sqlserver数据库的简单封装操作示例
Jan 05 NodeJs
PHPStorm中如何对nodejs项目进行单元测试详解
Feb 28 NodeJs
图解NodeJS实现登录注册功能
Sep 16 NodeJs
浅谈使用nodejs搭建web服务器的过程
Jul 20 NodeJs
NodeJs内存占用过高的排查实战记录
May 10 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
咖啡因含量是由谁决定的?低因咖啡怎么来?低因咖啡适合什么人喝
2021/03/06 新手入门
php截取utf-8中文字符串乱码的解决方法
2010/03/29 PHP
php实现有趣的人品测试程序实例
2015/06/08 PHP
php文件系统处理方法小结
2016/05/23 PHP
PHP实现二维数组(或多维数组)转换成一维数组的常见方法总结
2019/12/04 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
2020/04/05 PHP
jQuery的一些注意
2006/12/06 Javascript
JQuery从头学起第一讲
2010/07/04 Javascript
基于jQuery实现表格数据的动态添加与统计的代码
2011/01/31 Javascript
extjs4 treepanel动态改变行高度示例
2013/12/17 Javascript
JavaScript中逗号运算符介绍及使用示例
2015/03/13 Javascript
js获取页面description的方法
2015/05/21 Javascript
javascript中checkbox使用方法简单实例演示
2015/11/17 Javascript
javascript实现下雪效果【实例代码】
2016/05/03 Javascript
Angular 应用技巧总结
2016/09/14 Javascript
es6中的解构赋值、扩展运算符和rest参数使用详解
2017/09/28 Javascript
vue router仿天猫底部导航栏功能
2017/10/18 Javascript
Vue组件之单向数据流的解决方法
2018/11/10 Javascript
Vue 一键清空表单的实现方法
2020/02/07 Javascript
Node登录权限验证token验证实现的方法示例
2020/05/25 Javascript
浅谈vue 组件中的setInterval方法和window的不同
2020/07/30 Javascript
vue抽出组件并传值实例
2020/07/31 Javascript
JavaScript实现图片放大预览效果
2020/11/02 Javascript
c++生成dll使用python调用dll的方法
2014/01/20 Python
python嵌套字典比较值与取值的实现示例
2017/11/03 Python
深入理解Python单元测试unittest的使用示例
2017/11/18 Python
python 提取key 为中文的json 串方法
2018/12/31 Python
在Python中使用MongoEngine操作数据库教程实例
2019/12/03 Python
python 3.8.3 安装配置图文教程
2020/05/21 Python
印度和世界各地的精美产品:Ikka Dukka
2018/02/12 全球购物
波兰最大的度假胜地和城市公寓租赁运营商:Sun & Snow
2018/10/18 全球购物
商超业务员岗位职责
2014/03/12 职场文书
活动策划求职信模板
2014/04/21 职场文书
生物技术专业求职信
2014/06/10 职场文书
开展党的群众路线教育实践活动情况汇报
2014/11/05 职场文书
MATLAB 如何求取离散点的曲率最大值
2021/04/16 Python