HotXLS 文档

ResolveIndexedColor 方法

对索引颜色标记进行分类,并在工作簿调色板或调用方提供的系统颜色解析器能够提供具体 ARGB 值时解析出该值

该方法在 IXLSWorkbook 和 TXLSXWorkbook 上均可用,并且不会修改工作簿状态

语法

function ResolveIndexedColor(
  AIndex: Int64;
  ASpace: TXLSIndexedColorSpace;
  out AResolution: TXLSIndexedColorResolution): Boolean; overload;

function ResolveIndexedColor(
  AIndex: Int64;
  ASpace: TXLSIndexedColorSpace;
  ARole: TXLSIndexedColorRole;
  ASystemResolver: TXLSTryResolveSystemColor;
  out AResolution: TXLSIndexedColorResolution): Boolean; overload;

索引空间

空间解释
xicsPublicColorIndex公共调色板索引 1..56 映射到 BIFF 调色板槽位 8..63;带符号或无符号的 xlColorIndexAutomatic 被归类为自动
xicsBiffIcvBIFF 索引会根据所选角色进行验证:字体和批注颜色使用 IcvFont 子集,边框和填充颜色使用 IcvXF 子集,图表颜色使用 IcvChart 子集,一般查找使用完整的 Icv 表
xicsOoxmlIndexedOOXML 索引 0..63 寻址索引调色板,64 和 65 标识系统前景和背景,更大的值无效

结果

字段含义
KindxickPalette、xickAutomatic、xickSystem 或 xickInvalid
RawIndex未作更改的输入值
PaletteSlot从零开始的物理调色板槽位,当标记不是基于调色板时为 -1
SystemColorRole语义系统角色,包括窗口文本、窗口背景、图表文本、图表背景、图表中性色或工具提示文本
ARGB当 HasResolvedColor 为 true 时的规范化具体颜色
HasResolvedColor只有当调色板查找、固定格式颜色或显式回调产生了 RGB 值时才为 True

函数返回值与 HasResolvedColor 一致;当函数返回 false 时,分类信息仍可在 AResolution 中获得

系统颜色约定

短重载从不读取当前的 Windows 桌面,因此自动以及依赖环境的系统颜色保持未解析状态

长重载把 TXLSSystemColorRole 和 TXLSIndexedColorRole 都传递给 ASystemResolver,让调用方能够应用显式的 UI、导出或无界面渲染策略

回调输出必须使用 $AARRGGBB 通道顺序;Alpha 字节为零会被规范化为 $FF,而回调返回 false 时,语义标记保持已分类但未解析的状态

Windows COLORREF 使用 $00BBGGRR 通道顺序,必须在回调返回之前转换为 $AARRGGBB

无效标记绝不会调用回调,固定的 BIFF 图表中性色标记无需回调即可解析为不透明的黑色

示例

if Workbook.ResolveIndexedColor(12, xicsPublicColorIndex, Resolution) then
  UseArgb(Resolution.ARGB);

if not Workbook.ResolveIndexedColor($40, xicsBiffIcv, Resolution) then
  Assert(Resolution.Kind = xickSystem);

另请参阅