注意:解决方案只针对 XLSX version: '0.8.11'
其他版本仅供参考
- 数据验证(数据有效性)的相关与源代码
function(e) {
e = e.map(e => {
var t
if (e.formula1) {
t = B("formula1", e.formula1, {
count: 1
});
} else {
t = B("formula1", `"${e.values.join(",")}"`, {
count: 1
});
}
return B("dataValidation", t, {
type: e.type,
allowBlank: e.allowBlank || "1",
showInputMessage: e.showInputMessage || "1",
showErrorMessage: e.showErrorMessage || "1",
sqref: e.sqref
})
});
return B("dataValidations", e.join(""), {
count: e.length
})
}(r["!dataValidations"]))
如何使用:生成一个 workbook 实例对象,需要设置 workbook.Sheets 属性,这个属性储存的是 worksheet 表数据的数组。
worksheet['!dataValidations'] = [
{
type: 'list', //序列
sqref: 'D1:D1048576', //触发数据验证的单元格坐标
formula1: `worksheet名字!$A$1:$A$10` //数据验证序列来源的单元格坐标
}
]
- 隐藏worksheet的相关与源代码
for (var n = 0; n != e.SheetNames.length; ++n) {
let state = 'visible'
if (e.Workbook && e.Workbook.Sheets && e.Workbook.Sheets[n]) {
if (e.Workbook.Sheets[n].Hidden === 1) {
state = 'hidden'
} else if (e.Workbook.Sheets[n].Hidden === 2) {
state = 'veryHidden'
}
}
r[r.length] = B("sheet", null, {
name: e.SheetNames[n].substr(0, 31),
sheetId: "" + (n + 1),
"r:id": "rId" + (n + 1),
state
});
}
主要作用是生成 sheet 标签
<sheet name="worksheet名字" sheetId="1" r:id="rId1" state="hidden"/>
state属性值有3个
- visible
- hidden
- veryHidden
如何使用:生成一个 workbook 实例对象,需要设置 workbook.Workbook.Sheets 属性
Hidden有3个数值
0 代表visible
1 代表 hidden
2 代表 veryHidden
workbook.Workbook = {
Sheets: []
}
sheetResult.SheetNames.forEach((SheetName, idx) => {
const temp = []
if (SheetName === 'worksheet名字') {
temp.Hidden = 1
} else {
temp.Hidden = 0
}
sheetResult.Workbook.Sheets.push(temp)
})
新版本可以用方法 XLSX.utils.book_set_sheet_visibility(workbook, idx, hiddenVal) 设置隐藏