node表格模块exceljs介绍1--基本使用

前言

  • 用node作服务器端表格处理时,须要使用excel处理模块,网上能搜到的插件大概就三四种(xlsx,excel-export,node-xlsx等),通过个人使用,发现最强大,api最全面的就是exceljs
    然而由于其官方文档十分简洁(陋),初起时使用过程并不那么顺利,这里结合本身的经验,对exceljs模块及其基本用法进行简单介绍,对一些本身遇到的坑进行总结。

1、安装及引入模块

npm install exceljs

使用npm命令安装以后,在所须要的文件中引入exceljs模块:node

var Excel = require('exceljs');

2、建立工做簿及工做表

  • 引入以后,咱们就能够直接经过js建立工做簿,注意:建立工做表以前必须建立工做簿。

var workbook = new Excel.Workbook();npm

  • 工做簿有不少属性能够设置,好比建立人、修改时间等通常用不上的信息,通常不须要设置,若是你有特殊须要,那么请参照下述设置便可:

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

更多详细的关于建立工做簿的属性设置请[参考官方][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}});

// 建立第一行第一列冻结的表格ui

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

3、表格填充(数据写入)

  • 在写入数据以前,要指定使用的工做表,能够像下面这样操做:

// 经过表格名字(建立时的'My Sheet')插件

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

// 经过表格顺序数(id),即第几张表格,这里注意,exceljs不是从0开始计算,而是1。excel

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'}],也就是数据格式良好,有固定的键值对,那么推荐这种方式:
先定好表头code

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]);
}

4、生成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]);
    }

便可。
更多资料参阅官方文档若有问题可留言,互相交流解决。

相关文章
相关标签/搜索