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);