HotXLS 文档

SetThemeColor 方法(内部填充)

将单元格底纹填充(前景)颜色设置为 12 个 Office 主题颜色槽之一,并带可选色调调整。供希望直接寻址 Office 主题颜色(以便 Excel 可用工作簿的主题调色板重新为单元格着色)而非固定 RGB 的调用方使用,是 Interior.Color 的配套方法。自 v2.61.0(图表待办 wave D phase 4)起可用

语法

procedure SetThemeColor(ThemeIdx: Word; Tint: Double);

参数

ThemeIdx — 从 0 开始的主题槽: 0=lt11=dk12=lt23=dk24..9=accent1..accent610=hlink11=foHlink 与 XLSX 端使用的标准 Office 主题顺序一致
Tint — 规范风格的变浅/变深调整,范围为 -1.0 .. +1.0 0.0 使用主题槽的基色;负值变深(HSL 亮度趋向 0), 正值变浅(HSL 亮度趋向 1)。HotXLS 读取器将其编码为 Q15 有符号 整数,存入 XFExt 记录的 FullColorExt.nTintShade 字段

备注

该设置器走两条路径,使同一单元格在 Excel 2007+ 和 Excel 2003 中均能正确渲染:
通过 SetThemeColor 设置的单元格在加载时会往返:Interior.Color 返回解析后的 RGB(通过 BIFF 主题调色板应用主题 + 色调),因此调用方始终看到具体的 LongWord 值
在 Excel 中通过页面布局 → 颜色设置的自定义主题调色板可通过 BIFF8 Theme($0892)记录在加载和保存时保留,因此任何调用方的 SetThemeColor 引用都会通过工作簿的实际主题(而非默认 Office 方案)解析

示例

用 accent1 填充标题行,并用变浅 50% 的红色强调色(accent2 + 0.5 色调)标记警告单元格

var
  Header   : IXLSRange;
  Warnings : IXLSRange;
begin
  Header := Workbook.Sheets[1].Range['A1', 'G1'];
  Header.Interior.SetThemeColor(4, 0.0);   // accent1,基色

  Warnings := Workbook.Sheets[1].Range['G2', 'G20'];
  Warnings.Interior.SetThemeColor(5, 0.5);   // accent2,变浅 50%

  Workbook.SaveAs('ThemeFills.xls', xlExcel97);
end;

参见