簡體   English   中英

如何使用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”以外的任何內容,則條件格式會將單元格突出顯示為紅色。

我正在嘗試編寫一個函數,該函數返回 A1:A10 中所有單元格的列表,這些單元格以紅色突出顯示,而無需再次遍歷數據並檢查值是否為“foo”或“bar”。 我只想獲取條件格式設置為紅色的單元格列表。

當我使用range.getCellProperties()加載format/fill/color屬性時,即使條件格式將單元格填充顯示為紅色,它也會返回白色( #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);
          })
        })
      }); 

RangeFormat API 可以獲取范圍格式,但是不能獲取conditionalFormat因為conditionalFormat 並沒有改變真正的范圍格式,你可以嘗試在A8 的UI 中改變背景顏色,無論你改變什么顏色,它都顯示為紅色(條件格式顏色)。

因此,這將是檢測范圍顯示格式的新請求,因此我建議您可以在 uservoice 中提交您的請求,並在https://officespdev.uservoice.com/forums/224641-feature 上為此功能投票-requests-and-feedback?category_id=163563 並為此功能點贊。 謝謝您的支持

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM