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

便可。
更多資料參閱官方文檔若有問題可留言,互相交流解決。

相關文章
相關標籤/搜索