TXLSXConditionalFormats は TXLSXWorksheet.ConditionalFormats が公開するルールコレクションで、セル、表示、文字、順位、平均のルールをサポートします
コレクションメソッド
function Add(const ARange: WideString; AOp: TXLSXCfOperator; const AFormula1: WideString): Integer;
function AddDataBar(const ARange: WideString; AColor: LongWord; AMinKind: TXLSCfValueKind; const AMinValue: WideString; AMaxKind: TXLSCfValueKind; const AMaxValue: WideString): Integer;
function AddColorScale2(...): Integer;
function AddColorScale3(...): Integer;
function AddIconSet(const ARange: WideString; ASetType: TXLSIconSetType): Integer;
function AddExpression(const ARange, AFormula: WideString): Integer;
function AddTextRule(const ARange: WideString; AKind: TXLSCfKind; const AText: WideString): Integer;
function AddTop10(const ARange: WideString; ARank: Integer; ABottom, APercent: Boolean): Integer;
function AddAboveAverage(const ARange: WideString; AAbove: Boolean): Integer;
function AddSimpleRule(const ARange: WideString; AKind: TXLSCfKind): Integer;
ルールメンバー
| Range, Op, Formula1 and Formula2 | 標準的なセル比較ルールを定義 |
| Style | セルと式ルールで使う遅延差分書式 |
| DataBar, ColorScale and IconSet | 各ルール種別の表示データ |
| Priority and StopIfTrue | ルール順序と短絡動作を制御 |
| Text, Rank, Percent, Bottom and AboveAverage | 文字、上位または下位、平均ルールのパラメーター |
| TimePeriod | 期間ルールの相対日付範囲 |
ルールのターゲット範囲
2.384.76 から、ワークシート内のターゲットは単一セル、セル矩形、$B:$D のような列全体、$5:$8 のような行全体を受け付けます。逆順の端点は正規化され、空白、タブ、改行で複数の領域を区切れます
絶対参照と複合参照は元の Range テキストを保ちます。マッチングは 1 ~ 1048576 行、A ~ XFD 列を対象にし、不正な形式やグリッド外の領域はスキップします。同じルール内の有効な領域は、setter が新たに例外を起こすことなく、アクティブなまま保たれます
シート修飾参照や外部参照はターゲット領域にはなりません。各ルールは自分のワークシートに属し、ドル記号は通常の A1 参照位置にだけ置けます
ルールのルックアップ、セルと範囲の削除、条件付き書式エバリュエーターは、同じターゲット ジオメトリを使います。集計ルールは重なる領域を 1 回だけ数え、ターゲットがグリッド全体に及んでいても、保存されたセル値だけを訪問します
2.384.77 から、行と列の編集はワークシート グリッド内の全軸ルール ターゲットも変換します。全行または全列に及ぶ範囲は、その軸の編集では完全なまま保たれ、もう一方の軸の編集ではターゲットが移動、縮小、削除されます
範囲クローンは完全カバレッジの契約を保ちます。ルールがコピーされるには、すべてのターゲット領域がコピー元の矩形に収まっている必要があり、部分的な交差だけではルールはコピーされません。全軸ターゲットは、宛先がグリッド内に収まっているとき、行全体または列全体のソースからクローンできます
内部編集では、必要に応じてターゲットを分割し、共通のアンカーで等価なままの部分をマージすることで、相対式とセル比較数式のドメインを保存します。挿入時に Excel が暗黙的にコピーすることがあるグリッド末端の追加書式までは再現しません
例
var Index: Integer;
begin
Index := Sheet.ConditionalFormats.AddExpression('B2:B100', 'B2<0');
Sheet.ConditionalFormats[Index].Style.SetFillBgColor($0000FF);
Sheet.ConditionalFormats.AddColorScale3('C2:C100', $0000FF, $00FFFF, $00FF00, cfvMinOfRange, '', cfvPercentile, '50', cfvMaxOfRange, '');
end;条件付き表示形式
Style.SetNumFormatId は、ターゲット セルの基本書式とは独立に差分の表示形式を設定します。ID 0 は明示的な General へのリセットで、上書きがなければ基本書式が有効のままです
カスタム形式の ID は 164 + Index です。Index は Workbook.NumberFormats.Add の 0 始まりの戻り値です。XLSX の保存では、条件付きルールからのみ参照される表示形式も保持され、形式プールの圧縮時には ID が更新されます
ODS 条件付きスタイル
ODS のインポートとエクスポートは、セル比較ルールと式ルールの差分スタイルを保持します。フォントの色、名前、サイズ、太字、斜体、下線、ソリッドまたは透過の背景、そして ODS の表示形式コンバーターがサポートする表示形式が対象です
明示的な黒、通常のフォント ウェイト、下線なし、透過背景も上書きとして扱われます。ルールにない属性は、ターゲット セルの基本書式を引き続き使います
テーマ カラーとインデックス カラーは解決済みの色としてエクスポートされるため、見た目は保たれますが、テーマやパレットとしての同一性は ODS を通じてラウンドトリップしません。フォント スキームのメタデータに ODS への対応はありません
ODS は会計用下線ではなく通常の一重または二重下線を使い、パターン塗りつぶしは背景色で表されます。罫線と配置の上書きは TXLSDxfStyle では公開されません
検証済みの Excel 16 ODS インポートは、強調表示の色、明示的なリセット、下線、パーセント表示形式を保持しますが、条件付きのフォント ファミリとサイズは無視します。LibreOffice 26.2.5.2 はこれらの名前付きスタイル プロパティを読み、その変換結果の XLSX では Excel でも保持されます
2.384.75 から、ODS のセル比較ルールと式ルールは、行全体、列全体、広い範囲を含む完全なターゲットにわたって、コンパクトな繰り返し空白キャリアを使います。重なるルールは順序を保ち、キャリアだけのパディングは、HotXLS で再オープンしたときに保存セルを作りません
関連項目