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的子进程(child_process)调用系统命令的方法分享
Jun 05 NodeJs
Nodejs实现多人同时在线移动鼠标的小游戏分享
Dec 06 NodeJs
NodeJS Web应用监听sock文件实例
Feb 18 NodeJs
Nodejs Express4.x开发框架随手笔记
Nov 23 NodeJs
简单好用的nodejs 爬虫框架分享
Mar 26 NodeJs
nodejs动态创建二维码的方法
Aug 12 NodeJs
nodejs中密码加密处理操作详解
Mar 20 NodeJs
nodejs搭建本地服务器轻松解决跨域问题
Mar 21 NodeJs
nodejs同步调用获取mysql数据时遇到的大坑
Mar 02 NodeJs
Nodejs异步流程框架async的方法
Jun 07 NodeJs
nodejs实现获取本地文件夹下图片信息功能示例
Jun 22 NodeJs
NodeJS多种创建WebSocket监听的方式(三种)
Jun 04 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
require(),include(),require_once()和include_once()的异同
2007/01/02 PHP
修改php.ini不生效问题解决方法(上传大于8M的文件)
2013/06/14 PHP
php导出CSV抽象类实例
2014/09/24 PHP
php中json_encode不兼容JSON_UNESCAPED_UNICODE的解决方案
2016/05/31 PHP
PHP递归算法的简单实例
2019/02/28 PHP
PHP判断是否微信访问的方法示例
2019/03/27 PHP
PHP中Static(静态)关键字功能与用法实例分析
2019/04/05 PHP
向fckeditor编辑器插入指定代码的方法
2007/05/25 Javascript
避免 showModalDialog 弹出新窗体的原因分析
2010/05/31 Javascript
Js event事件在IE、FF兼容性问题
2011/01/01 Javascript
jquery click([data],fn)使用方法实例介绍
2013/07/08 Javascript
jquery实现加载等待效果示例
2013/09/25 Javascript
javascript验证身份证完全方法具体实现
2013/11/18 Javascript
jquery动态改变onclick属性导致失效的问题解决方法
2013/12/04 Javascript
jQuery操作元素css样式的三种方法
2014/06/04 Javascript
javascript实现的HashMap类代码
2014/06/27 Javascript
原生js三级联动的简单实现代码
2016/06/07 Javascript
ReactNative Image组件使用详解
2017/08/07 Javascript
vue解决弹出蒙层滑动穿透问题的方法
2018/09/22 Javascript
关于element-ui的隐藏组件el-scrollbar的使用
2019/05/29 Javascript
详解Webpack抽离第三方类库以及common解决方案
2020/03/30 Javascript
Vuex的热更替如何实现
2020/06/05 Javascript
javascript实现雪花飘落效果
2020/08/19 Javascript
Webpack5正式发布,有哪些新特性
2020/10/12 Javascript
解决python中无法自动补全代码的问题
2018/12/04 Python
Python实现将通信达.day文件读取为DataFrame
2018/12/22 Python
利用python实现在微信群刷屏的方法
2019/02/21 Python
全球烹饪课程的领先预订平台:Cookly
2020/01/28 全球购物
学习自我鉴定
2014/02/01 职场文书
无传销社区工作方案
2014/05/13 职场文书
公民代理授权委托书
2014/09/24 职场文书
检讨书范文
2015/01/27 职场文书
公司仓管员岗位职责
2015/04/01 职场文书
2015秋季小学开学寄语
2015/05/27 职场文书
大学体育课感想
2015/08/10 职场文书
Vue.js 带下拉选项的输入框(Textbox with Dropdown)组件
2021/04/17 Vue.js