在上篇中,我们掌握了Node.js的Sheetjs(Node.js的xlsx模块)对EXCEL进行文件读写,但遗憾的是Sheetjs社区支持版无法传递EXCEL原有样式。
即便我们去读有样式的EXCEL文件,再按照读取的样式写入文件也没有样式保留。
如果需要定制EXCEL样式,我们需要使用xlsx-js-style
,能够创建带有基本样式选项的Excel电子表格。
首先来看官方文档的例子和说明:
本篇只做学习记录,建议大家要处理EXCEL直接用exceljs 模块,比这个好用多了
一、文档学习
引入模块
js
npm install xlsx-js-style
核心API
完全移植Sheetjs(Node.js的xlsx模块)核心功能API
基于sheetjs0.18.5
样式API
js
const XLSX = require('xlsx-js-style')
// 第1步: 创建一个新的工作簿(workbook)
const 工作簿 = XLSX.utils.book_new();
// 第2步: 创建数据行和样式
let row = [
{ v: "字体Courier: 24", t: "s", s: { font: { name: "Courier", sz: 24 } } },
{ v: "边框 和 颜色", t: "s", s: { font: { bold: true, color: { rgb: "FF0000" } } } },
{ v: "填充颜色", t: "s", s: { fill: { fgColor: { rgb: "E9E9E9" } } } },
{ v: "换\n行", t: "s", s: { alignment: { wrapText: true } } },
];
// 第3步: 创建具有一行数据的工作表;将工作表添加到工作簿
const 工作表 = XLSX.utils.aoa_to_sheet([row]);
XLSX.utils.book_append_sheet(工作簿, 工作表, "表名");
// 第4步: 写入Excel文件(如不存在则创建)
XLSX.writeFile(工作簿, "文件名.xlsx");
单元格样式属性
单元格样式由OpenXML结构近似的样式对象指定。
目前支持的样式属性包括:
alignment
, border
, fill
, font
, numFmt
border
、fill
和font
的颜色是通过名称/值对象进行指定的,可以使用以下选项之一:rgb
:十六进制RGB值,例如:{rgb: "FFCC00"}
,表示红色。theme
:主题颜色索引,例如:{theme: 4}
,表示索引为4的主题颜色(主题颜色索引从0开始)。Excel中内置了一些主题颜色,可以根据索引来选择。tint
:通过百分比调整主题颜色的色调,例如:{theme: 1, tint: 0.4}
,表示将索引为1的主题颜色调亮40%。
BORDER_STYLE
边框样式属性
边框样式属性可以是以下值之一:
dashDotDot
:虚线点线dashDot
:虚线点划线dashed
:虚线dotted
:点划线hair
:极细点划线mediumDashDotDot
:中等点划线点线mediumDashDot
:中等点划线mediumDashed
:中等虚线medium
:中等线slantDashDot
:倾斜点划线thick
:粗线thin
:细线
合并边框注意
对于合并区域的边框,需要在合并区域内的每个单元格中进行指定。
例如,要将一个盒子边框应用于3x3个单元格的合并区域,需要为8个不同的单元格指定边框样式:
- 左侧边框(左边的三个单元格)
- 右侧边框(右边的单元格)
- 顶部边框(顶部的单元格)
- 底部边框(左边的单元格)