1. 程式人生 > >【轉載】NodeJS excel 匯出(exceljs)

【轉載】NodeJS excel 匯出(exceljs)

1、先來個匯入

excel

這裡寫圖片描述

解析方法

var Excel = require('exceljs');

var workbook = new Excel.Workbook();
var data = [];
workbook.xlsx.readFile('import.xlsx')
    .then(function(){
    var worksheet = workbook.getWorksheet(1);
    var row = worksheet.getRow(2);
    row.eachCell(function(cell, colNumber){
        var
value = cell.value; if(typeof value == "object") value = value.text; data.push(value); //console.log('Cell ' + colNumber + ' = ' + JSON.stringify(cell.value.text)); }); //console.log(worksheet.getRow(2)); console.log(JSON.stringify(data)); });
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

測試結果

["易窗","天道絕","神王一段","太一神劍","龍麒麟"]
  • 1
  • 2

2、匯出

匯出效果

這裡寫圖片描述

匯出方法

/**
 * Created by alex on 17-2-23.
 */
var Excel = require('exceljs');

//cell style
var fills = {
    solid: {type: "pattern", pattern:"solid", fgColor:{argb:"FFFFAAAA"}}
};

//create a workbook
var workbook = new Excel.Workbook();

//add header
var ws1 = workbook.addWorksheet("測試一"); ws1.addRow(["地址","地面"]); ws1.addRow(["總人口", "不可計數"]); ws1.addRow(["型別", "動物", "非動物"]); ws1.addRow(["統計日期", "1111-11-11 11:11:11"]); ws1.addRow(); //A6:E6 ws1.addRow(["你", "在", "說些", "神馬", "呢?"]); ws1.getCell("A6").fill = fills.solid; ws1.getCell("B6").fill = fills.solid; ws1.getCell("C6").fill = fills.solid; ws1.getCell("D6").fill = fills.solid; ws1.getCell("E6").fill = fills.solid; //7 - 13(A7:A13) - 7 ws1.addRow(["什麼跟神馬", 10, 1, "凡人修仙傳", 7]); ws1.addRow(["","","","一號遺蹟", 2]); ws1.addRow(["","","","六號遺蹟", 0]); ws1.addRow(["","","","古國一號", 0]); ws1.addRow(["","","","鍛體期", 0]); ws1.addRow(["","","","合體期", 0]); ws1.addRow(["","","","沒資質", 1]); ws1.mergeCells("A7:A13") ws1.mergeCells("B7:B13") ws1.mergeCells("C7:C13") //a6-e13 a b c d e //ws1.getCell('A7').alignment = { vertical: 'middle', horizontal: 'center' }; rowCenter(ws1, 6, 13);  colWidth(ws1, [1,2,3,4,5], 20); var ws2 = workbook.addWorksheet("測試二"); var ws3 = workbook.addWorksheet("測試三"); //設定 start-end 行單元格水平垂直居中/新增邊框 functionrowCenter(arg_ws, arg_start, arg_end) { for(i = arg_start; i <= arg_end; i++) { arg_ws.findRow(i).alignment = { vertical: 'middle', horizontal: 'center' }; //迴圈 row 中的 cell,給每個 cell新增邊框 arg_ws.findRow(i).eachCell(function(cell, index) { cell.border = { top: {style:'thin'}, left: {style:'thin'}, bottom: {style:'thin'}, right: {style:'thin'} }; }) } } //設定 start-end 列的寬度 functioncolWidth(arg_ws, arg_cols, arg_width) { for(i in arg_cols) { arg_ws.getColumn(arg_cols[i]).width = arg_width; } } // workbook.xlsx.writeFile('test2.xlsx') .then(function(){ console.log('生成 xlsx'); });
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84