node表格模块exceljs引见1--基础运用

媒介

  • 用node做服务器端表格处置惩罚时,须要运用excel处置惩罚模块,网上能搜到的插件也许就三四种(xlsx,excel-export,node-xlsx等),经由我的运用,发明最壮大,api最全面的就是exceljs
    然则由于其官方文档非常简约(陋),初起时运用历程并不那末顺遂,这里连系本身的履历,对exceljs模块及其基础用法举行简朴引见,对一些本身碰到的坑举行总结。

一、装置及引入模块

npm install exceljs

运用npm敕令装置以后,在所须要的文件中引入exceljs模块:

var Excel = require('exceljs');

二、建立事情簿及事情表

  • 引入以后,我们就能够直接经由过程js建立事情簿,注重:建立事情表之前必需建立事情簿。

var workbook = new Excel.Workbook();

  • 事情簿有许多属性能够设置,比方建立人、修正时候等平常用不上的信息,平常不须要设置,假如你有特殊须要,那末请参照下述设置即可:

workbook.creator = 'WJY';//设置建立者
workbook.lastModifiedBy = 'Her';//上次修正人
workbook.created = new Date(1985, 8, 30);//建立时候
workbook.modified = new Date();//修正时候

更多细致的关于建立事情簿的属性设置请[参考官方][1]。

  • 建立事情簿以后,须要为事情簿增加事情表,用来寄存我们的数据:
   var sheet = workbook.addWorksheet('My Sheet');
  • 一般如许建立就够了,然则也能够设置建立的事情表的属性:

// 建立标签为赤色的表格

var sheet = workbook.addWorksheet('My Sheet', {properties:{tabColor:{argb:'FFC0000'}}});

// 建立网格线隐蔽的表格

var sheet = workbook.addWorksheet('My Sheet', {properties: {showGridLines: false}});

// 建立第一行第一列凝结的表格

var sheet = workbook.addWorksheet('My Sheet', {views:[{xSplit: 1, ySplit:1}]});

三、表格添补(数据写入)

  • 在写入数据之前,要指定运用的事情表,能够像下面如许操纵:

// 经由过程表格名字(建立时的’My Sheet’)

var worksheet = workbook.getWorksheet('My Sheet');

// 经由过程表格顺序数(id),即第几张表格,这里注重,exceljs不是从0最先盘算,而是1。

var worksheet = workbook.getWorksheet(1);
  • 拿到事情表以后,能够经由过程两种体式格局将表格内容天生:

1.worksheet.getCell('A1').value = 'value';
这类体式格局较为天真,可填写恣意位置的表格,应用轮回嵌套等体式格局可天生想要的表格。
兼并单元格运用: worksheet.mergeCells('I2:J2');此时兼并了I2 J2两个单元格。
2.假如数据是对象数组data=[{name:’a’},{name:’b’},{name:’c’}],也就是数据格式优越,有牢固的键值对,那末引荐这类体式格局:
先定好表头

worksheet.columns = [
 { header: '姓名', key: 'name', width: 10 },
 ];

header:参数即为在表头里涌现的值,key示意这列的值对应的对象的key(本例为name),width为表格列宽。
设置表头以后,运用addrow要领即可将数据写入表中,以下:

for(let i =0;i<data.length;i++){
 worksheet.addRow(data[i]);
}

四、天生xlsx文件

var filename='test.xlsx';//天生的文件名
fpath=path.join(__dirname,'../download/'+filename)//文件寄存途径
workbook.xlsx.writeFile(fpath)//将workbook天生文件
    .then(function() {
        //文件天生胜利后实行的操纵,这里是将途径返回客户端,你能够有本身的操纵
      res.send({filePath:filename})
    });

总结、

有时候我们数据格式优越,但须要完成自定义表头(表头有兼并单元格、多级表优等),这时候该怎么办呢?
夹杂运用 worksheet.mergeCells()worksheet.getCell().value
设置表头,以后运用

worksheet.columns = [
     {  key: 'name', width: 10 },
     ];

注重:这里没有header的key,假若有,将会掩盖我们的自定义表头内容。
后续一般挪用

for(let i =0;i<data.length;i++){
     worksheet.addRow(data[i]);
    }

即可。
更多材料参阅官方文档
若有题目可留言,相互交换处理。

    原文作者:懒懒的技术宅
    原文地址: https://segmentfault.com/a/1190000013187144
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞