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学习笔记之Connect中间件模块(一)
Jan 27 NodeJs
nodejs事件的监听与触发的理解分析
Feb 12 NodeJs
nodeJS删除文件方法示例
Dec 25 NodeJs
搭建简单的nodejs http服务器详解
Mar 09 NodeJs
Nodejs回调加超时限制两种实现方法
Jun 09 NodeJs
webstorm中配置nodejs环境及npm的实例
May 15 NodeJs
nodejs 十六进制字符串型数据与btye型数据相互转换
Jul 30 NodeJs
NodeJS实现自定义流的方法
Aug 01 NodeJs
NodeJS如何实现同步的方法示例
Aug 24 NodeJs
nodejs 递归拷贝、读取目录下所有文件和目录
Jul 18 NodeJs
浅谈Node的内存泄露问题
May 06 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
可定制的PHP缩略图生成程式(需要GD库支持)
2007/03/06 PHP
PHP实现基于文本的摩斯电码生成器
2016/01/11 PHP
浅析PHP 中move_uploaded_file 上传中文文件名失败
2019/04/17 PHP
ExtJS 2.0 实用简明教程之布局概述
2009/04/29 Javascript
滚动条变色 隐藏滚动条与双击网页自动滚屏显示代码
2009/12/28 Javascript
比较搞笑的js陷阱题
2010/02/07 Javascript
jquery常用函数与方法汇总
2015/09/01 Javascript
jquery validate.js表单验证入门实例(附源码)
2015/11/10 Javascript
JavaScript使用forEach()与jQuery使用each遍历数组时return false 的区别
2016/08/26 Javascript
详解JS-- 浮点数运算处理
2016/11/28 Javascript
JavaScript字符串对象
2017/01/14 Javascript
angular2+nodejs实现图片上传功能
2017/03/27 NodeJs
javascript 中null和undefined区分和比较
2017/04/19 Javascript
利用JavaScript的Map提升性能的方法详解
2019/08/14 Javascript
浅谈vant组件Picker 选择器选单选问题
2020/11/04 Javascript
python 文件操作删除某行的实例
2017/09/04 Python
新手常见6种的python报错及解决方法
2018/03/09 Python
Python中if elif else及缩进的使用简述
2018/05/31 Python
对python操作kafka写入json数据的简单demo分享
2018/12/27 Python
Python Django给admin添加Action的方法实例详解
2019/04/29 Python
flask 实现token机制的示例代码
2019/11/07 Python
django框架中间件原理与用法详解
2019/12/10 Python
Python利用逻辑回归分类实现模板
2020/02/15 Python
在ipython notebook中使用argparse方式
2020/04/20 Python
python中使用input()函数获取用户输入值方式
2020/05/03 Python
CSS3 实现的缩略图悬停效果
2020/12/09 HTML / CSS
html2canvas生成清晰的图片实现打印的示例代码
2019/09/30 HTML / CSS
美国独家设计师眼镜在线光学商店:Glasses Gallery
2017/12/28 全球购物
罗兰·穆雷官网:Roland Mouret
2018/09/28 全球购物
PHP如何与mysql建立链接
2013/05/05 面试题
个人思想理论学习的自我鉴定
2013/11/30 职场文书
测绘专业大学生职业生涯规划书
2014/02/10 职场文书
保险公司客户经理岗位职责
2015/04/09 职场文书
2016年学校招生广告语
2016/01/28 职场文书
怎样写工作总结啊!
2019/06/18 职场文书
Python自动化工具之实现Excel转Markdown表格
2022/04/08 Python