カスタムカラーパレット
概要
Excel ワークブックは 2 つのモデルで色の書式設定を管理します。BIFF8(古典的な XLS)の古い 56 色インデックスパレットと、OpenXML (XLSX) の任意の RGB バインディングまたはテーマスロットです。HotXLS は、パレット対応付けインデックスをカスタマイズする API を提供し、これらの形式間の差異をスムーズに橋渡しします
パレットカラーのインデックス
BIFF8 形式は、書式設定の色を 8 から 63 までのインデックスエントリに対応付けます。ワークブックのカラーインターフェースを使用して既定の色定義を上書きできます
procedure SetColor(const AIndex: Integer; const AColor: TColor);
パレットインデックスを更新せずにカスタム RGB 値をセルに直接割り当てると、HotXLS は自動的にワークブックのアクティブなパレット内の最も近い色に対応付けします
決定論的なインデックスカラーの解決
IXLSWorkbook と TXLSXWorkbook は、ワークブックを変更せずにインデックスを解釈する対応する ResolveIndexedColor オーバーロードを公開しています
呼び出し側は、ソースのインデックス空間として公開 ColorIndex、BIFF の icv、OOXML の indexed のいずれかを指定します。結果はパレット、自動、システム、無効の各トークンを区別したまま保持し、具体的な色を取得できた場合にのみ正規化された ARGB 値を報告します
システムおよび自動のトークンが、暗黙的に現在のデスクトップ環境を読み取ることはありません。環境固有の RGB 出力が必要な場合は、明示的なシステムカラー リゾルバーを渡してください
使用役割(usage role)は、BIFF の罫線インデックス 0 が黒ではなく「未指定」を意味するといった、形式固有の意味を保持します
RGB 値を最も近い物理パレット エントリに対応付ける必要がある場合は、NearestIndexedColor を使用します。共有されたキャッシュ付き OKLab マッチャーが、ワークブックを変更せずに公開インデックスと物理インデックスを返します
パレット変更を計画する前に決定論的な 56 スロットのインベントリを取得するには、ScanIndexedColorUsage を使用します。スタイル、ワークシート オブジェクト、グラフ、コメント、条件付き書式からの定義と参照が、影響を受けるスロットをロック済みとしてマークします
変更を伴わないパレット計画
BuildBiffPalettePlan を使用すると、ワークブックを変更せずに、直接 RGB と解決済みテーマカラーが 56 の物理 BIFF パレット スロットにどう収まるかをプレビューできます
この計画は、ロック済みとして報告されたすべてのインデックス スロットを保護し、既存の同一色は最小の一致スロットに維持し、容量が残っている間は同一色を割り当て、一意なターゲットが空きスロットを超えた場合にのみ頻度加重の決定論的 OKLab クラスタリングを使用します
各ターゲットは、選択された公開インデックスと物理インデックス、対応付けられた ARGB 値、頻度の重み、二乗知覚距離、完全一致状態を報告します。サマリー フィールドは、完全一致の重み、加重誤差、最大誤差、変更されたスロット数、量子化が必要だったかどうかを報告します
ソース パレットのジェネレーションとハッシュにより、ApplyBiffPalettePlan はどのスロットも変更する前に、古いまたは改ざんされた計画を拒否できます。適用に成功するとキャッシュされたマッチャーが一度だけ再構築され、有効な no-op 計画はジェネレーションを変更しません
古典的なワークブックは BiffPaletteSavePolicy も公開しています。既定値は従来のパレットを保持し、明示的な最適化値は BIFF8 出力に対してのみ現在の計画を構築して適用し、保存が失敗またはキャンセルされた場合は元のパレットを復元します
リッチな RGB カラー対応付け
XLSX ワークブックはパレットの制限を回避し、24 ビット RGB 値の直接割り当てを許可します。以下のカラー変換 API を確認してください
- Workbook Colors プロパティ — インデックスでパレットの色にアクセスします
- ResolveIndexedColor メソッド — インデックスカラー トークンを分類し、必要に応じて解決します
- NearestIndexedColor メソッド — キャッシュされた知覚マッチングで最も近い物理パレット エントリを見つけます
- ScanIndexedColorUsage メソッド — すべての物理パレット スロットについて、定義、参照、コンシューマーの種類、保持ロックを調査します
- BuildBiffPalettePlan メソッド — ワークブックの状態を変更せずに、決定論的なトゥルーカラー配置と量子化をプレビューします
- ApplyBiffPalettePlan メソッド — 現在の 56 スロット パレット計画を検証してアトミックに適用します
- BiffPaletteSavePolicy プロパティ — 古典的なワークブック向けに、保持または明示的に最適化された BIFF8 パレット出力を選択します
- カラーモデルの概要 — 古典的 XLS のカラー変換ロジック
- Interior SetThemeColor — Office テーマを使用してセルの塗りつぶしを設定します