工作中我们可能会遇到制作表格的需求,那么针对nodejs如何制作一个汇总表格呢?今天我们就在此介绍下exceljs的基本使用,应该可以满足我们大部分的需求。

第一部分 下载

1
npm install exceljs

第二部分 基本的配置

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
var Excel = require("exceljs");

var workbook = new Excel.Workbook();

// 基本的创建信息
workbook.creator = "Me";
workbook.lastModifiedBy = "Her";
workbook.created = new Date(1985, 8, 30);
workbook.modified = new Date();
workbook.lastPrinted = new Date(2016, 9, 27);

// 视图大小, 打开Excel时,整个框的位置,大小
workbook.views = [
{
x: 0,
y: 0,
width: 1000,
height: 2000,
firstSheet: 0,
activeTab: 1,
visibility: "visible"
}
];

// 标签创建
var worksheet = workbook.addWorksheet("第一个标签");
// 带颜色的
var worksheet2 = workbook.addWorksheet("第二个标签", { properties: { tabColor: { argb: "FFC0000" } } });

// 遍历标签
workbook.eachSheet((worksheet, sheetId) => {
console.log("标签ID:", sheetId)
})
// console.log(worksheet);
// 删除一个标签
workbook.removeWorksheet(2)

var firstSheet = workbook.getWorksheet(1);
console.log("标签信息-id", firstSheet.id);
console.log("获取总的:行/实际行 /列/实际列 个数: ", firstSheet.rowCount, firstSheet.actualColumnCount, firstSheet.columnCount, firstSheet.actualColumnCount);

// 添加那个筛选箭头
worksheet.autoFilter = 'A1:C1';

worksheet.getRow(5).font = { size: 14, bold: true };

worksheet.getCell("A2").value = "Site";
worksheet.getCell("A2").font = {
name: "Arial Black",
color: { argb: "FF00FF00" },
family: 2,
size: 14,
italic: true,
bold: true
};

// save workbook to disk
workbook.xlsx.writeFile("first.xlsx").then(function() {
console.log("saved");
});

第三部分 行列的操作

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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
var Excel = require("exceljs");

var workbook = new Excel.Workbook();

// 标签创建
var worksheet = workbook.addWorksheet("第一个标签");
// 带颜色的
var worksheet2 = workbook.addWorksheet("第二个标签", {
properties: {
tabColor: {
argb: "FFC0000"
}
}
});
// 设置列
worksheet.columns = [{
header: 'Rating Period',
key: 'id',
width: 38
},
{
header: 'Name',
key: 'name',
width: 32,
},
{
header: 'D.O.B.',
key: 'DOB',
width: 10,
style: {
numFmt: 'dd/mm/yyyy'
}
}
];

/// 根据ID添加值
worksheet.addRow({
id: 1,
name: 'John Doe',
dob: new Date(1970, 1, 1)
});
worksheet.addRow({
id: 2,
name: 'Jane Doe',
dob: new Date(1965, 1, 7)
});

worksheet.getCell(1).value = "Z";


// 直接赋值
worksheet.getCell('A6').value = "1989";

// 合并单元格
worksheet.mergeCells('A4:A7');
// 合并四个格子
worksheet.mergeCells('A10', 'B11');

// ===== 格式化显示,
// 数字 1.6 显示 '1 3/5'
worksheet.getCell('A1').value = 1.6;
worksheet.getCell('A1').numFmt = '# ?/?';
// 显示 1.60%
worksheet.getCell('B1').value = 0.016;
worksheet.getCell('B1').numFmt = '0.00%';
// ===== 字体显示
worksheet.getCell('A3').font = {
// 字体名
name: 'Comic Sans MS',
// Font family for fallback. An integer value.
family: 4,
// 字体大小
size: 16,
// 下划线
underline: true,
// 加粗
bold: true,
};
worksheet.getCell('A3').value = "测试字体"

// ==== 对齐方式
worksheet.getCell('A1').alignment = {
vertical: 'top',
horizontal: 'left'
};
worksheet.getCell('B1').alignment = {
vertical: 'middle',
horizontal: 'center'
};
worksheet.getCell('C1').alignment = {
vertical: 'bottom',
horizontal: 'right'
};

// ===== 边框
worksheet.getCell('A1').border = {
top: {
style: 'double',
color: {
argb: 'FF00FF00'
}
},
left: {
style: 'double'
},
bottom: {
style: 'thin'
},
right: {
style: 'thin'
}
};

// ==== 填充颜色
worksheet.getCell('A1').fill = {
// 模式
type: 'pattern',
// 填充
pattern: 'solid',
// fgColor: {
// argb: 'FFFF0000'
// },
// 背景色
bgColor: {
argb: 'FF0000FF'
}
};
// 图片相关操作直接看GitHub就好

// 直接创建一个Excel表
workbook.xlsx.writeFile("second.xlsx").then(function () {
console.log("saved");
});