如何使用 office-js 获取由条件格式引起的 Excel 单元格填充颜色
How to get an Excel cell fill color caused by conditional formatting using office-js
我正在使用执行不同类型错误检查的 Excel Javascript API 设置条件格式。例如,如果用户在 A1:A10 范围内输入 "foo" 或 "bar" 以外的任何内容,则条件格式将以红色突出显示该单元格。
我正在尝试编写一个函数,该函数 returns A1:A10 中以红色突出显示的所有单元格的列表 没有 循环数据再次检查值是 "foo" 还是 "bar"。我只想获取条件格式设置为红色的单元格列表。
当我使用 range.getCellProperties()
加载 format/fill/color
属性 时,它 returns 白色 (#FFFFFF
) 即使条件格式显示单元格填充作为红色。如何在条件格式评估后获取单元格的填充颜色?
Click here for code 重现了这个问题。 运行 这是在 Script Lab 中的简单位置。同时在下面发布代码:
await Excel.run(async (context) => {
const sheet = context.workbook.worksheets.getActiveWorksheet();
// setup
var rangeWithValues = sheet.getRange("A1:A5");
rangeWithValues.values = [["foo"], ["bar"], ["foo"], ["bar"], ["foo"]];
var conditionalFormatRange = sheet.getRange("A1:A10");
conditionalFormatRange.conditionalFormats.clearAll();
var conditionalFormat = conditionalFormatRange.conditionalFormats.add(Excel.ConditionalFormatType.custom);
conditionalFormat.custom.rule.formula = `=NOT(OR(A1="foo",A1="bar"))`;
conditionalFormat.custom.format.fill.color = "red";
await context.sync();
// get cell props
var rangeProps = conditionalFormatRange.getCellProperties({
address: true,
format: {
fill: {
color: true
}
}
});
await context.sync();
// output vals
rangeProps.value.forEach(rowProps => {
rowProps.forEach(cellProp => {
console.log("address: " + cellProp.address + "; fill color: " + cellProp.format.fill.color);
})
})
});
RangeFormat
API 可以得到范围格式,但是不能得到 conditionalFormat
因为条件格式没有改变真正的范围格式,你可以尝试改变 [=21 中的背景颜色=] 对于A8,无论你改变什么颜色,它都显示为红色(条件格式颜色)。
因此,这将是一个检测范围显示格式的新请求,所以我建议您可以在 uservoice 中提交您的请求,并在 https://officespdev.uservoice.com/forums/224641-feature-requests-and-feedback?category_id=163563 上为此功能点赞。并为此功能点赞。感谢您的支持
我正在使用执行不同类型错误检查的 Excel Javascript API 设置条件格式。例如,如果用户在 A1:A10 范围内输入 "foo" 或 "bar" 以外的任何内容,则条件格式将以红色突出显示该单元格。
我正在尝试编写一个函数,该函数 returns A1:A10 中以红色突出显示的所有单元格的列表 没有 循环数据再次检查值是 "foo" 还是 "bar"。我只想获取条件格式设置为红色的单元格列表。
当我使用 range.getCellProperties()
加载 format/fill/color
属性 时,它 returns 白色 (#FFFFFF
) 即使条件格式显示单元格填充作为红色。如何在条件格式评估后获取单元格的填充颜色?
Click here for code 重现了这个问题。 运行 这是在 Script Lab 中的简单位置。同时在下面发布代码:
await Excel.run(async (context) => {
const sheet = context.workbook.worksheets.getActiveWorksheet();
// setup
var rangeWithValues = sheet.getRange("A1:A5");
rangeWithValues.values = [["foo"], ["bar"], ["foo"], ["bar"], ["foo"]];
var conditionalFormatRange = sheet.getRange("A1:A10");
conditionalFormatRange.conditionalFormats.clearAll();
var conditionalFormat = conditionalFormatRange.conditionalFormats.add(Excel.ConditionalFormatType.custom);
conditionalFormat.custom.rule.formula = `=NOT(OR(A1="foo",A1="bar"))`;
conditionalFormat.custom.format.fill.color = "red";
await context.sync();
// get cell props
var rangeProps = conditionalFormatRange.getCellProperties({
address: true,
format: {
fill: {
color: true
}
}
});
await context.sync();
// output vals
rangeProps.value.forEach(rowProps => {
rowProps.forEach(cellProp => {
console.log("address: " + cellProp.address + "; fill color: " + cellProp.format.fill.color);
})
})
});
RangeFormat
API 可以得到范围格式,但是不能得到 conditionalFormat
因为条件格式没有改变真正的范围格式,你可以尝试改变 [=21 中的背景颜色=] 对于A8,无论你改变什么颜色,它都显示为红色(条件格式颜色)。
因此,这将是一个检测范围显示格式的新请求,所以我建议您可以在 uservoice 中提交您的请求,并在 https://officespdev.uservoice.com/forums/224641-feature-requests-and-feedback?category_id=163563 上为此功能点赞。并为此功能点赞。感谢您的支持