如何获得由使用office-js的条件格式引起的Excel单元格填充颜色

问题描述 投票:1回答:1

我正在使用执行不同类型的错误检查的Excel Javascript API设置条件格式。例如,如果用户在范围A1:A10中输入“ foo”或“ bar”以外的任何内容,则条件格式将以红色突出显示单元格。

我正在尝试编写一个函数,该函数返回以红色突出显示的A1:A10中所有单元格的列表再次遍历数据并检查值是“ foo”还是“ bar”。我只想获取条件格式变为红色的单元格列表。

当我使用format/fill/color加载range.getCellProperties()属性时,即使条件格式将单元格填充显示为红色,它也会返回白色(#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);
          })
        })
      }); 
excel office-js office-addins excel-addins
1个回答
0
投票

RangeFormat API可以获取范围格式,但不能获取conditionalFormat,因为conditionalFormat并未更改实际范围格式,因此无论您更改哪种颜色,都可以尝试在UI中更改A8的背景颜色,它显示为红色(条件格式颜色)。

因此,这将是一个新的请求,用于检测范围的显示格式,因此,我建议您可以以[uservoice]提交请求,并在https://officespdev.uservoice.com/forums/224641-feature-requests-and-feedback?category_id=163563处对此功能进行投票。并为此功能投票。感谢您的支持

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.