var datas = {
A1: {
v: '数据',
s: {
font: {
sz: 14,
bold: true,
color: { rgb: "FFFFAA00" }
},
fill: {
bgColor: {
indexed: 64
},
fgColor: {
rgb: "FFFF00"
}
}
}
}
};
单元格样式| 样式属性 | 子属性 | 取值 |
| fill 填充 | patternType 填充方式 | "solid" or "none" |
|
|
fgColor | COLOR_SPEC |
|
|
bgColor 背景颜色 | COLOR_SPEC |
| font 字体格式 |
name 字体名称 |
"Calibri" // default |
|
|
sz 字体大小 | "11" // font size in points |
|
|
color 字体颜色 | COLOR_SPEC |
|
|
bold 是否为粗体 | true or false |
|
|
underline 是否有下划线 | true or false |
|
|
italic 是否为斜体字 | true or false |
|
|
strike | true or false |
|
|
outline | true or false |
|
|
shadow | true or false |
|
|
vertAlign | true or false |
| numFmt 数字格式化 |
|
"0" // integer index to built in formats, see StyleBuilder.SSF property |
|
|
|
"0.00%" // string matching a built-in format, see StyleBuilder.SSF |
|
|
|
"0.0%" // string specifying a custom format |
|
|
|
"0.00%;\\(0.00%\\);\\-;@" // string specifying a custom format, escaping special characters |
|
|
|
"m/dd/yy" // string a date format using Excel's format notation |
| alignment 对齐方式 |
vertical 垂直对齐方式 |
"bottom" or "center" or "top" |
|
|
horizontal 水平对齐方式 | "bottom" or "center" or "top" |
|
|
wrapText 文本是否自动换行 | true or false |
|
|
readingOrder | 2 // for right-to-left |
|
|
textRotation | Number from 0 to 180 or 255 (default is 0 ) |
|
|
|
90 is rotated up 90 degrees |
|
|
|
45 is rotated up 45 degrees |
|
|
|
135 is rotated down 45 degrees |
|
|
|
180 is rotated down 180 degrees |
|
|
|
255 is special, aligned vertically |
|
border 边框 |
top 上边框 | { style: BORDER_STYLE, color: COLOR_SPEC } |
|
|
bottom 下边框 | { style: BORDER_STYLE, color: COLOR_SPEC } |
|
|
left 左边框 | { style: BORDER_STYLE, color: COLOR_SPEC } |
|
|
right 右边框 | { style: BORDER_STYLE, color: COLOR_SPEC } |
|
|
diagonal | { style: BORDER_STYLE, color: COLOR_SPEC } |
|
|
diagonalUp | true or false |
|
|
diagonalDown | true or false |
COLOR_SPEC
填充、字体和边框的颜色被指定为对象,或者:
{ auto: 1} //自动指定值
{ rgb: "FFFFAA00" } //指/定十六进制ARGB值
{ theme: "1", tint: "-0.25"} 为主题颜色和色调值指定整数索引(默认为0)
{ indexed: 64} fill.bgColor 的默认值
BORDER_STYLE
边框样式是一个字符串值,可以使用以下任何一个值:
thin
medium
thick
dotted
hair
dashed
mediumDashed
dashDot
mediumDashDot
dashDotDot
mediumDashDotDot
slantDashDot
合并区域的边界为合并区域内的每个单元指定。因此,要将一个框边框应用到一个合并区域的3x3单元格,需要为8个不同的单元格指定边框样式。如下图:

其中:
左边边框:需要设置左边三个单元格的左边边框
右边边框:需要设置右边三个单元格的右边边框
顶部边框:需要设置顶部三个单元格的顶部边框
底部边框:需要设置底部三个单元格的底部边框
实例
对 excel 的 C2 单元格进行格式化,设置字体为粗字体、字体大小为14,设置颜色为 #FFAA00,并且设置背景颜色为 #FFFF00。完成代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<title>JS-XLSX Demo</title>
<script type="text/javascript" src='./xlsx-style/xlsx.full.min.js'></script>
</head>
<body>
<p>使用JS导出Excel表,并且对表格的单元格进行格式化</p>
<p>
<button onclick="exportExcel()">导出Excel</button>
</p>
<script type="text/javascript">
function exportExcel() {
var datas = {
'!ref': 'A1:D10',
A1: { v: '分类' },
B1: { v: '编程语言' },
C1: { v: '描述信息' },
A2: { v:'后端编程' },
B2: { v:'Java' },
C2: {
v:'世界上最好的语言',
s:{
font: {
sz: 14,
bold: true,
color: { rgb: "FFFFAA00" }
},
fill: {
bgColor: {
indexed: 64
},
fgColor: {
rgb: "FFFF00"
}
}
}
},
A3: { v:'后端编程' },
B3: { v:'C#' },
C3: { v:'出自微软的手笔,微软的Java' },
A4: { v:'后端编程' },
B4: { v:'PHP' },
C4: { v:'我不是很喜欢的编程语言' },
A5: { v:'前端编程' },
B5: { v:'JavaScript' },
C5: { v:'前端人员必会语言,有了JavaScript才有灵魂' },
A6: { v:'操作系统' },
B6: { v:'Linux' },
C6: { v:'开源的操作系统,适合做服务器' },
};
var wb = {
SheetNames: ['Sheet1'],
Sheets: {
Sheet1: datas
}
};
var tmpDown = new Blob([
s2ab(
// 这里的数据是用来定义导出的格式类型
XLSX.write(wb, {
bookType: 'xlsx',
bookSST: false,
type: 'binary'
})
)
], {
type: ""
});
saveAs(tmpDown, "write_num.xlsx");
}
function saveAs(obj, fileName) {
var tmpa = document.createElement("a");
tmpa.download = fileName || "下载";
tmpa.href = URL.createObjectURL(obj);
tmpa.click();
setTimeout(function () {
URL.revokeObjectURL(obj);
}, 100);
}
function s2ab(s) {
if (typeof ArrayBuffer !== 'undefined') {
var buf = new ArrayBuffer(s.length);
var view = new Uint8Array(buf);
for (var i = 0; i != s.length; ++i) {
view[i] = s.charCodeAt(i) & 0xFF;
}
return buf;
} else {
var buf = new Array(s.length);
for (var i = 0; i != s.length; ++i) {
buf[i] = s.charCodeAt(i) & 0xFF;
}
return buf;
}
}
</script>
</body>
</html>
实例运行效果如下图:
点击“导出Excel”按钮,将数据导出到 Excel 表格。excel 效果如下图:

注意:该实例不能使用 js-xlsx 库,我们需要到 github / npm 库上面去下载 xlsx-style 库。淘宝 npm 库地址 http://npm.taobao.org/package/xlsx-style
