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学习笔记之Global Objects全局对象
Jan 13 NodeJs
用nodejs的实现原理和搭建服务器(动态)
Aug 10 NodeJs
NodeJs的优势和适合开发的程序
Aug 14 NodeJs
nodejs中使用HTTP分块响应和定时器示例代码
Mar 19 NodeJs
基于nodejs 的多页面爬虫实例代码
May 31 NodeJs
nodejs基于mssql模块连接sqlserver数据库的简单封装操作示例
Jan 05 NodeJs
nodejs取得当前执行路径的方法
May 13 NodeJs
修改Nodejs内置的npm默认配置路径方法
May 13 NodeJs
nodejs中express入门和基础知识点学习
Sep 13 NodeJs
Nodejs对postgresql基本操作的封装方法
Feb 20 NodeJs
nodejs npm错误Error:UNKNOWN:unknown error,mkdir 'D:\Develop\nodejs\node_global'at Error
Mar 02 NodeJs
nodejs读取图片返回给浏览器显示
Jul 25 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中使用Oracle数据库(1)
2006/10/09 PHP
用文本文件制作留言板提示(上)
2006/10/09 PHP
一个PHP的String类代码
2010/04/20 PHP
PIGCMS 如何关闭聊天机器人
2015/02/12 PHP
Yii2框架实现注册和登录教程
2016/09/30 PHP
php实用代码片段整理
2016/11/12 PHP
PHPExcel在linux环境下导出报500错误的解决方法
2017/01/26 PHP
js中的json对象详细介绍
2014/10/29 Javascript
javascript实现youku的视频代码自适应宽度
2015/05/25 Javascript
jQuery获得字体颜色16位码的方法
2016/02/20 Javascript
如何防止INPUT按回车自动提交表单FORM
2016/12/06 Javascript
js 函数式编程学习笔记
2017/03/25 Javascript
vue2.0中vue-cli实现全选、单选计算总价格的实例代码
2017/07/18 Javascript
原生JavaScrpit中异步请求Ajax实现方法
2017/11/03 Javascript
node.js文件上传重命名以及移动位置的示例代码
2018/01/19 Javascript
jQuery实现的点击按钮改变样式功能示例
2018/07/21 jQuery
微信小程序用户信息encryptedData详解
2018/08/24 Javascript
javascript实现点击星星小游戏
2019/12/24 Javascript
使用JavaScript获取扫码枪扫描得到的条形码的思路代码详解
2020/06/10 Javascript
解决vux 中popup 组件Mask 遮罩在最上层的问题
2020/11/03 Javascript
[56:38]DOTA2-DPC中国联赛正赛Aster vs Magma BO3 第一场 3月5日
2021/03/11 DOTA
python使用socket远程连接错误处理方法
2015/04/29 Python
Python错误: SyntaxError: Non-ASCII character解决办法
2017/06/08 Python
Python基于requests实现模拟上传文件
2020/04/21 Python
美国销售第一的智能手机和平板电脑保护壳:OtterBox
2017/12/21 全球购物
Proenza Schouler官方网站:纽约女装和配饰品牌
2019/01/03 全球购物
毕业生就业自荐信
2013/12/04 职场文书
五一家具促销方案
2014/01/10 职场文书
环保建议书600字
2014/05/14 职场文书
就业意向书
2014/07/29 职场文书
2014年党风廉政建设工作总结
2014/11/19 职场文书
2015年组织部工作总结
2015/04/03 职场文书
国庆阅兵观后感
2015/06/15 职场文书
《学会生存》读后感3篇
2019/12/09 职场文书
Apache SkyWalking 监控 MySQL Server 实战解析
2022/09/23 Servers
Python sklearn分类决策树方法详解
2022/09/23 Python