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实用示例 缩址还原
Dec 28 NodeJs
跟我学Nodejs(二)--- Node.js事件模块
May 21 NodeJs
基于 Docker 开发 NodeJS 应用
Jul 30 NodeJs
基于NodeJS的前后端分离的思考与实践(一)全栈式开发
Sep 26 NodeJs
nodejs下打包模块archiver详解
Dec 03 NodeJs
轻松创建nodejs服务器(1):一个简单nodejs服务器例子
Dec 18 NodeJs
Windows系统中安装nodejs图文教程
Feb 28 NodeJs
NodeJS整合银联网关支付(DEMO)
Nov 09 NodeJs
windows 下安装nodejs 环境变量设置
Feb 02 NodeJs
详解Nodejs之静态资源处理
Jun 05 NodeJs
nodejs操作mongodb的增删改查功能实例
Nov 09 NodeJs
Nodejs中的require函数的具体使用方法
Apr 02 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
DC动画电影《黑暗正义联盟》曝预告 5月5日上线数字平台
2020/04/09 欧美动漫
发布一个用PHP fsockopen写的HTTP下载的类
2007/02/22 PHP
php中使用Curl、socket、file_get_contents三种方法POST提交数据
2011/08/12 PHP
php中引用符号(&)的使用详解
2013/11/13 PHP
PHP实现删除非站内外部链接实例代码
2014/06/17 PHP
PHP+Mysql+jQuery查询和列表框选择操作实例讲解
2015/10/22 PHP
ThinkPHP框架实现导出excel数据的方法示例【基于PHPExcel】
2018/05/12 PHP
php通过各种函数判断0和空
2020/07/04 PHP
IE浏览器打印的页眉页脚设置解决方法
2009/12/08 Javascript
腾讯与新浪的通过IP地址获取当前地理位置(省份)的接口
2010/07/26 Javascript
利用js读取动态网站从服务器端返回的数据
2014/02/10 Javascript
原生javascript获取元素样式
2014/12/31 Javascript
jquery使整个div区域可以点击的方法
2015/06/24 Javascript
微信小程序 action-sheet 反馈上拉菜单简单实例
2017/05/11 Javascript
浅谈 Vue v-model指令的实现原理
2017/06/08 Javascript
js+html5实现半透明遮罩层弹框效果
2020/08/24 Javascript
nodejs dgram模块广播+组播的实现示例
2019/11/04 NodeJs
ES6实现图片切换特效代码
2020/01/14 Javascript
python通过yield实现数组全排列的方法
2015/03/18 Python
深入理解NumPy简明教程---数组1
2016/12/17 Python
Python实现统计给定字符串中重复模式最高子串功能示例
2018/05/16 Python
转换科学计数法的数值字符串为decimal类型的方法
2018/07/16 Python
python如何实现从视频中提取每秒图片
2020/10/22 Python
Python使用Slider组件实现调整曲线参数功能示例
2019/09/06 Python
Python PyInstaller安装和使用教程详解
2020/01/08 Python
Django 解决model 反向引用中的related_name问题
2020/05/19 Python
美国孕妇装购物网站:Motherhood Maternity
2019/09/22 全球购物
李维斯牛仔裤荷兰官方网站:Levi’s NL
2020/08/23 全球购物
八年级音乐教学反思
2014/01/09 职场文书
关于青春的演讲稿
2014/05/05 职场文书
2014年预备党员端正入党动机思想汇报
2014/09/13 职场文书
2014年初一班主任工作总结
2014/11/08 职场文书
2014年营销工作总结
2014/11/22 职场文书
2019关于实习生工作安排及待遇的管理方案!
2019/07/16 职场文书
golang import自定义包方式
2021/04/29 Golang
php访问对象中的成员的实例方法
2021/11/17 PHP