Как получить цвет заливки ячейки Excel, вызванный условным форматированием, используя office- js - PullRequest
1 голос
/ 12 марта 2020

Я устанавливаю условное форматирование с помощью API Excel Javascript, который выполняет различные виды проверки ошибок. Например, если пользователь вводит что-либо кроме «foo» или «bar» в диапазоне A1: A10, тогда условное форматирование выделит ячейку красным цветом.

Я пытаюсь написать функцию, которая возвращает список всех ячеек в A1: A10, которые выделены красным без повторного прохождения данных и проверки, является ли значение "foo" или "bar". Я просто хочу получить список ячеек, которые условное форматирование сделало красным.

Когда я загружаю свойство format/fill/color, используя range.getCellProperties(), оно возвращает белый (#FFFFFF), даже когда отображается условное форматирование ячейка заполняется красным цветом. Как получить цвет заливки ячейки после оценки условного форматирования?

Нажмите здесь, чтобы получить код , который воспроизводит эту проблему. Легко запустить это в 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);
          })
        })
      }); 

1 Ответ

0 голосов
/ 13 марта 2020

RangeFormat API может получить формат диапазона, но не может получить conditionalFormat, так как условный формат не изменил формат реального диапазона, вы можете попробовать изменить цвет фона в пользовательском интерфейсе для A8, независимо от того, какой цвет вы меняете, он отображает как красный (условный формат цвета).

Таким образом, это будет новый запрос для определения формата отображения диапазона, поэтому я хотел бы предложить, чтобы вы могли отправить свой запрос в uservoice и upvote для этой функции на https://officespdev.uservoice.com/forums/224641-feature-requests-and-feedback?category_id=163563 , и upvote для этой функции. спасибо за вашу поддержку

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...