Why the style set does not work #3259
Labels
No Label
DBF
Dates
Defined Names
Features
Formula
HTML
Images
Infrastructure
Integration
International
ODS
Operations
Performance
PivotTables
Pro
Protection
Read Bug
SSF
SYLK
Style
Write Bug
good first issue
No Milestone
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: sheetjs/sheetjs#3259
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
version 0.20.3
the style set does not work
The code is as follows, where the style data of the output console is correct
export function exportExcelByAoa(wbName, wsName, aoa, titleRowCount, merges = [], cols = []) {
const newWorkbook = XLSX.utils.book_new()
const workSheet = XLSX.utils.aoa_to_sheet(aoa)
const border = {
top: { style: 'thin' },
bottom: { style: 'thin' },
left: { style: 'thin' },
right: { style: 'thin' }
}
// 设置单元格样式
const range = XLSX.utils.decode_range(workSheet['!ref'])
for (let R = range.s.r; R <= range.e.r; ++R) {
for (let C = range.s.c; C <= range.e.c; ++C) {
const cellAddress = XLSX.utils.encode_cell({ r: R, c: C });
const cellStyle = {
alignment: { vertical: 'center', horizontal: 'center' },
border: border
}
if (R < titleRowCount) { // 标题行
cellStyle.font = { bold: true }
}
if (!workSheet[cellAddress]) { workSheet[cellAddress] = {}}
if (!workSheet[cellAddress].s) { workSheet[cellAddress].s = {}}
workSheet[cellAddress].s = { ...cellStyle }
}
}
workSheet['!cols'] = cols
workSheet['!merges'] = merges
XLSX.utils.book_append_sheet(newWorkbook, workSheet, wsName)
for (let key in workSheet) {
if (workSheet[key] instanceof Object) {
console.log(key, '=>', workSheet[key].s)
}
}
XLSX.writeFile(newWorkbook,
${wbName}.xlsx
, { cellStyles: true })}
测试数据JSON
{
"wbName":"【2024-11-18~2024-11-20】测试项目阶段(TQ-S2493)项目工时记录表",
"wsName":"项目工时记录",
"aoa":[
[
"【2024-11-18~2024-11-20】测试项目阶段(TQ-S2493)项目工时记录表",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
""
],
[
"序号",
"日期",
"意向阶段",
"",
"",
"设计阶段",
"",
"",
"设计阶段",
"",
"",
"设计阶段",
"",
"",
"设计阶段",
"",
"",
"设计阶段",
"",
"",
"设计阶段",
"",
"",
"设计阶段",
"",
"",
"厂内安装调试阶段",
"",
"",
"厂内安装调试阶段",
"",
"",
"厂内安装调试阶段",
"",
"",
"厂内安装调试阶段",
"",
"",
"厂内安装调试阶段",
"",
"",
"厂内安装调试阶段",
"",
"",
"项目现场安装调试阶段",
"",
"",
"项目现场安装调试阶段",
"",
"",
"项目现场安装调试阶段",
"",
"",
"项目现场安装调试阶段",
"",
"",
"项目现场安装调试阶段",
"",
"",
"项目现场安装调试阶段",
"",
"",
"项目现场运营陪产阶段",
"",
"",
"管理费用",
"",
"",
"管理费用",
"",
""
],
[
"",
"",
"产品部人工工时",
"",
"",
"机械主设计人工工时",
"",
"",
"机械辅设计人工工时",
"",
"",
"电气主设计人工工时",
"",
"",
"电气辅设计人工工时",
"",
"",
"嵌入式设计人工工时",
"",
"",
"软件设计人工工时",
"",
"",
"视觉设计人工工时",
"",
"",
"机械装配人工工时",
"",
"",
"电气装配人工工时",
"",
"",
"电气调试人工工时",
"",
"",
"嵌入式调试人工工时",
"",
"",
"软件调试人工工时",
"",
"",
"视觉调试人工工时",
"",
"",
"机械装配人工工时",
"",
"",
"电气装配人工工时",
"",
"",
"电气调试人工工时",
"",
"",
"嵌入式调试人工工时",
"",
"",
"软件调试人工工时",
"",
"",
"视觉调试人工工时",
"",
"",
"陪产人工工时",
"",
"",
"项目经理人工工时",
"",
"",
"项目助理人工工时",
"",
""
],
[
"",
"",
"姓名",
"工时(小时)",
"工时(天)",
"姓名",
"工时(小时)",
"工时(天)",
"姓名",
"工时(小时)",
"工时(天)",
"姓名",
"工时(小时)",
"工时(天)",
"姓名",
"工时(小时)",
"工时(天)",
"姓名",
"工时(小时)",
"工时(天)",
"姓名",
"工时(小时)",
"工时(天)",
"姓名",
"工时(小时)",
"工时(天)",
"姓名",
"工时(小时)",
"工时(天)",
"姓名",
"工时(小时)",
"工时(天)",
"姓名",
"工时(小时)",
"工时(天)",
"姓名",
"工时(小时)",
"工时(天)",
"姓名",
"工时(小时)",
"工时(天)",
"姓名",
"工时(小时)",
"工时(天)",
"姓名",
"工时(小时)",
"工时(天)",
"姓名",
"工时(小时)",
"工时(天)",
"姓名",
"工时(小时)",
"工时(天)",
"姓名",
"工时(小时)",
"工时(天)",
"姓名",
"工时(小时)",
"工时(天)",
"姓名",
"工时(小时)",
"工时(天)",
"姓名",
"工时(小时)",
"工时(天)",
"姓名",
"工时(小时)",
"工时(天)",
"姓名",
"工时(小时)",
"工时(天)"
],
[
1,
"2024-11-19",
"",
"",
"",
"赵凯",
15,
1.6667,
"",
"",
"",
"",
"",
"",
"娄本相",
8.52,
1.065,
"刘强",
9,
1.125,
"张志民",
5,
0.5556,
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"孙新龙",
15,
1.6667,
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
""
],
[
2,
"2024-11-19",
"",
"",
"",
"董光辉",
2,
0.2222,
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
""
]
],
"titleRowCount":4,
"merges":[
{
"s":{
"r":0,
"c":0
},
"e":{
"r":0,
"c":70
}
},
{
"s":{
"r":1,
"c":0
},
"e":{
"r":3,
"c":0
}
},
{
"s":{
"r":1,
"c":1
},
"e":{
"r":3,
"c":1
}
},
{
"s":{
"r":2,
"c":2
},
"e":{
"r":2,
"c":4
}
},
{
"s":{
"r":2,
"c":5
},
"e":{
"r":2,
"c":7
}
},
{
"s":{
"r":1,
"c":2
},
"e":{
"r":1,
"c":4
}
},
{
"s":{
"r":2,
"c":8
},
"e":{
"r":2,
"c":10
}
},
{
"s":{
"r":2,
"c":11
},
"e":{
"r":2,
"c":13
}
},
{
"s":{
"r":2,
"c":14
},
"e":{
"r":2,
"c":16
}
},
{
"s":{
"r":2,
"c":17
},
"e":{
"r":2,
"c":19
}
},
{
"s":{
"r":2,
"c":20
},
"e":{
"r":2,
"c":22
}
},
{
"s":{
"r":2,
"c":23
},
"e":{
"r":2,
"c":25
}
},
{
"s":{
"r":2,
"c":26
},
"e":{
"r":2,
"c":28
}
},
{
"s":{
"r":1,
"c":5
},
"e":{
"r":1,
"c":25
}
},
{
"s":{
"r":2,
"c":29
},
"e":{
"r":2,
"c":31
}
},
{
"s":{
"r":2,
"c":32
},
"e":{
"r":2,
"c":34
}
},
{
"s":{
"r":2,
"c":35
},
"e":{
"r":2,
"c":37
}
},
{
"s":{
"r":2,
"c":38
},
"e":{
"r":2,
"c":40
}
},
{
"s":{
"r":2,
"c":41
},
"e":{
"r":2,
"c":43
}
},
{
"s":{
"r":2,
"c":44
},
"e":{
"r":2,
"c":46
}
},
{
"s":{
"r":1,
"c":26
},
"e":{
"r":1,
"c":43
}
},
{
"s":{
"r":2,
"c":47
},
"e":{
"r":2,
"c":49
}
},
{
"s":{
"r":2,
"c":50
},
"e":{
"r":2,
"c":52
}
},
{
"s":{
"r":2,
"c":53
},
"e":{
"r":2,
"c":55
}
},
{
"s":{
"r":2,
"c":56
},
"e":{
"r":2,
"c":58
}
},
{
"s":{
"r":2,
"c":59
},
"e":{
"r":2,
"c":61
}
},
{
"s":{
"r":2,
"c":62
},
"e":{
"r":2,
"c":64
}
},
{
"s":{
"r":1,
"c":44
},
"e":{
"r":1,
"c":61
}
},
{
"s":{
"r":2,
"c":65
},
"e":{
"r":2,
"c":67
}
},
{
"s":{
"r":1,
"c":62
},
"e":{
"r":1,
"c":64
}
},
{
"s":{
"r":2,
"c":68
},
"e":{
"r":2,
"c":70
}
},
{
"s":{
"r":1,
"c":65
},
"e":{
"r":1,
"c":70
}
},
{
"s":{
"r":4,
"c":1
},
"e":{
"r":5,
"c":1
}
}
],
"cols":[
{
"wch":6
},
{
"wch":12
},
{
"wch":6
},
{
"wch":12
},
{
"wch":12
},
{
"wch":6
},
{
"wch":12
},
{
"wch":12
},
{
"wch":6
},
{
"wch":12
},
{
"wch":12
},
{
"wch":6
},
{
"wch":12
},
{
"wch":12
},
{
"wch":6
},
{
"wch":12
},
{
"wch":12
},
{
"wch":6
},
{
"wch":12
},
{
"wch":12
},
{
"wch":6
},
{
"wch":12
},
{
"wch":12
},
{
"wch":6
},
{
"wch":12
},
{
"wch":12
},
{
"wch":6
},
{
"wch":12
},
{
"wch":12
},
{
"wch":6
},
{
"wch":12
},
{
"wch":12
},
{
"wch":6
},
{
"wch":12
},
{
"wch":12
},
{
"wch":6
},
{
"wch":12
},
{
"wch":12
},
{
"wch":6
},
{
"wch":12
},
{
"wch":12
},
{
"wch":6
},
{
"wch":12
},
{
"wch":12
},
{
"wch":6
},
{
"wch":12
},
{
"wch":12
},
{
"wch":6
},
{
"wch":12
},
{
"wch":12
},
{
"wch":6
},
{
"wch":12
},
{
"wch":12
},
{
"wch":6
},
{
"wch":12
},
{
"wch":12
},
{
"wch":6
},
{
"wch":12
},
{
"wch":12
},
{
"wch":6
},
{
"wch":12
},
{
"wch":12
},
{
"wch":6
},
{
"wch":12
},
{
"wch":12
},
{
"wch":6
},
{
"wch":12
},
{
"wch":12
},
{
"wch":6
},
{
"wch":12
},
{
"wch":12
}
]
}