[英]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.