ScanIndexedColorUsage 方法
傳回一份具確定性的清查結果,涵蓋全部 56 個實體活頁簿調色盤槽位,以及使用這些槽位的索引色彩定義與參考
此方法同時適用於 IXLSWorkbook 與 TXLSXWorkbook,且不會修改調色盤、儲存格、樣式、條件格式或活頁簿狀態
語法
function ScanIndexedColorUsage: TXLSIndexedColorUsageArray;
結果
傳回的陣列一律包含 56 個項目,依實體槽位從 8 到 63 的升冪排列
| 欄位 | 意義 |
|---|---|
ColorIndex | 對應的 1 到 56 之間的公開調色盤索引 |
PaletteSlot | 8 到 63 之間的實體 BIFF 或 OOXML 索引色彩槽位 |
ARGB | 目前儲存在該槽位上的正規化不透明色彩,無法解析時為零 |
DefinitionCount | 指向該槽位的索引定義數量 |
ReferenceCount | 參考這些定義的物件、儲存格或所涵蓋條件格式位置的數量 |
Kinds | 描述所有已觀察到之取用者類別的集合 |
Locked | 當該槽位至少有一個定義或參考、因而調色盤最佳化計畫必須保留它時為 True |
取用者涵蓋範圍
Kinds 可以包括字型、填滿前景、填滿背景、漸層、框線、條件格式、圖表、圖案、註解、工作表設定以及其他索引取用者
傳統 XLS 掃描包括字型、XF 填滿與框線、工作表格線、圖案與註解色彩、豐富文字與圖表字型參考、舊版條件格式,以及 BIFF12 資料橫條或色階
XLSX 掃描包括已具體化的儲存格樣式參考、樣式覆寫、具名樣式、字型、填滿、漸層與框線集區、差異樣式、資料橫條與色階
直接 RGB、佈景主題、自動、系統與無效色彩語彙基元不會鎖定實體調色盤槽位
效能與狀態合約
掃描只會走訪已儲存的稀疏儲存格與現有的樣式中繼資料;不會具體化封裝儲存格,也不會逐一走訪未使用的工作表座標
計數使用飽和的 64 位元算術,因此大範圍不會回繞成較小的值
對未變更的活頁簿重複呼叫會傳回完全相同的項目,並保持自訂調色盤計數與儲存統計資料不變
範例
Usage := Workbook.ScanIndexedColorUsage;
for I := 0 to High(Usage) do
if Usage[I].Locked then
PreservePaletteSlot(Usage[I].PaletteSlot);