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的10个性能优化技巧
Jul 15 NodeJs
使用Nodejs开发微信公众号后台服务实例
Sep 03 NodeJs
windows下安装nodejs及框架express
Aug 07 NodeJs
解决nodejs中使用http请求返回值为html时乱码的问题
Feb 18 NodeJs
用nodeJS搭建本地文件服务器的几种方法小结
Mar 16 NodeJs
配置nodejs环境的方法
May 13 NodeJs
Nodejs+express+ejs简单使用实例代码
Sep 18 NodeJs
nodejs结合socket.io实现websocket通信功能的方法
Jan 12 NodeJs
详解Nodejs mongoose
Jun 10 NodeJs
NodeJS 中Stream 的基本使用
Jul 30 NodeJs
nodejs和react实现即时通讯简易聊天室功能
Aug 21 NodeJs
nodejs处理tcp连接的核心流程
Feb 26 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模拟SQL Server的两个日期处理函数
2006/10/09 PHP
php二维数组排序方法(array_multisort usort)
2013/12/25 PHP
PHP判断文章里是否有图片的简单方法
2014/07/26 PHP
Laravel 实现密码重置功能
2018/02/23 PHP
浅谈PHP中pack、unpack的详细用法
2018/03/12 PHP
国外大牛IE版本检测!现在IE都到9了,IE检测代码
2012/01/04 Javascript
JQuery入门——移除绑定事件unbind方法概述及应用
2013/02/05 Javascript
Js判断参数(String,Array,Object)是否为undefined或者值为空
2013/11/04 Javascript
js正则表达exec与match的区别说明
2014/01/29 Javascript
jquery分页插件jpaginate在IE中不兼容问题
2014/04/22 Javascript
node.js中的http.response.setHeader方法使用说明
2014/12/14 Javascript
JavaScript与HTML的结合方法详解
2015/11/23 Javascript
JavaScript 函数的执行过程
2016/05/09 Javascript
AngularJS 遇到的小坑与技巧小结
2016/06/07 Javascript
jQuery操作复选框(CheckBox)的取值赋值实现代码
2017/01/10 Javascript
JS中Select下拉列表类(支持输入模糊查询)功能
2017/01/17 Javascript
Vue中之nextTick函数源码分析详解
2017/10/17 Javascript
为什么使用koa2搭建微信第三方公众平台的原因
2018/05/16 Javascript
vue源码学习之Object.defineProperty 对数组监听
2018/05/30 Javascript
如何使node也支持从url加载一个module详解
2018/06/05 Javascript
vue实现todolist功能、todolist组件拆分及todolist的删除功能
2019/04/11 Javascript
基于layui轮播图满屏是高度自适应的解决方法
2019/09/16 Javascript
一行代码让 Python 的运行速度提高100倍
2018/10/08 Python
浅析CSS3中鲜为人知的属性:-webkit-tap-highlight-color
2017/01/12 HTML / CSS
浅析CSS3 用text-overflow解决文字排版问题
2020/10/28 HTML / CSS
澳大利亚在线百货商店:Real Smart
2017/08/13 全球购物
印尼太阳百货公司网站:Matahari
2018/02/04 全球购物
Kivari官网:在线购买波西米亚服装
2018/10/29 全球购物
Nordgreen手表德国官方网站:丹麦极简主义手表
2019/10/31 全球购物
我能否用void** 指针作为参数, 使函数按引用接受一般指针
2013/02/16 面试题
一家外企的面试题目(C/C++面试题,C语言面试题)
2014/03/24 面试题
教师节慰问信
2015/02/15 职场文书
军训决心书范文
2015/09/22 职场文书
如何用JS实现简单的数据监听
2021/05/06 Javascript
Java Dubbo框架知识点梳理
2021/06/26 Java/Android
SQL Server使用CROSS APPLY与OUTER APPLY实现连接查询
2022/05/25 SQL Server