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 相关文章推荐
windows系统下简单nodejs安装及环境配置
Jan 08 NodeJs
Nodejs实现的一个静态服务器实例
Dec 06 NodeJs
Nodejs关于gzip/deflate压缩详解
Mar 04 NodeJs
iPhone手机上搭建nodejs服务器步骤方法
Jul 06 NodeJs
nodejs连接mongodb数据库实现增删改查
Dec 01 NodeJs
nodejs使用express创建一个简单web应用
Mar 31 NodeJs
手把手教你把nodejs部署到linux上跑出hello world
Jun 19 NodeJs
详解NODEJS基于FFMPEG视频推流测试
Nov 17 NodeJs
关于Mac下安装nodejs、npm和cnpm的教程
Apr 11 NodeJs
基于nodejs的雪碧图制作工具的示例代码
Nov 05 NodeJs
nodejs基础之多进程实例详解
Dec 27 NodeJs
windows如何把已安装的nodejs高版本降级为低版本(图文教程)
Dec 14 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
地摊中国 - 珍藏老照片
2020/08/18 杂记
DOMXML函数笔记
2006/10/09 PHP
PHP Zip压缩 在线对文件进行压缩的函数
2010/05/26 PHP
php实现aes加密类分享
2014/02/16 PHP
帝国CMS留言板回复后发送EMAIL通知客户
2015/07/06 PHP
php中namespace use用法实例分析
2016/01/22 PHP
javascript onkeydown,onkeyup,onkeypress,onclick,ondblclick
2009/02/04 Javascript
javascript ie6兼容position:fixed实现思路
2013/04/01 Javascript
director.js实现前端路由使用实例
2015/02/03 Javascript
js鼠标点击图片切换效果代码分享
2015/08/26 Javascript
基于jQuery实现响应式圆形图片轮播特效
2015/11/25 Javascript
js实现文本框输入文字个数限制代码
2015/12/25 Javascript
判断数组的最佳方法(推荐)
2016/10/11 Javascript
a标签置灰不可点击的实现方法
2017/02/06 Javascript
微信小程序使用audio组件播放音乐功能示例【附源码下载】
2017/12/08 Javascript
node.js中fs文件系统目录操作与文件信息操作
2018/02/24 Javascript
angularJs 表格添加删除修改查询方法
2018/02/27 Javascript
基于node搭建服务器,写接口,调接口,跨域的实例
2018/05/13 Javascript
vue中各种通信传值方式总结
2019/02/14 Javascript
Vue动态组件与异步组件实例详解
2019/02/23 Javascript
你不知道的Vue技巧之--开发一个可以通过方法调用的组件(推荐)
2019/04/15 Javascript
小程序组件传值和引入sass的方法(使用vant Weapp组件库)
2020/11/24 Javascript
JS模拟实现京东快递单号查询
2020/11/30 Javascript
[36:33]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第二场 11.29
2020/12/02 DOTA
Python使用os模块和fileinput模块来操作文件目录
2016/01/19 Python
学习python的前途 python挣钱
2019/02/27 Python
Python3.7 读取 mp3 音频文件生成波形图效果
2019/11/05 Python
用python写PDF转换器的实现
2020/10/29 Python
video实现有声音自动播放的实现方法
2020/05/20 HTML / CSS
非洲NO.1网上商店:Jumia肯尼亚
2016/08/18 全球购物
理肤泉加拿大官网:La Roche-Posay加拿大
2018/07/06 全球购物
澳大利亚领先的亚麻品牌:Bed Threads
2019/12/16 全球购物
一套SQL笔试题
2016/08/14 面试题
导游词之江苏溱潼古镇
2019/11/27 职场文书
导游词之张家口
2019/12/13 职场文书
WebWorker 封装 JavaScript 沙箱详情
2021/11/02 Javascript