Documentazione HotXLS

TXLSXConditionalFormat e TXLSXConditionalFormats classes

TXLSXConditionalFormats is the rule collection exposed by TXLSXWorksheet.ConditionalFormats e supports cell, visual, text, ranking e average rules

Collection methods

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;

Rule members

Range, Op, Formula1 and Formula2Define a standard cell comparison rule
StyleLazy differential format used by cell e expression rules
DataBar, ColorScale and IconSetVisual payloads for their respective rule kinds
Priority and StopIfTrueControl worksheet rule order e short-circuit behaviour
Text, Rank, Percent, Bottom and AboveAverageParameters for text, top o bottom e average rules
TimePeriodRelative-date band for time-period rules

Intervalli di destinazione delle regole

Dalla versione 2.384.76, le destinazioni locali del foglio accettano singole celle, rettangoli di celle, colonne intere come $B:$D e righe intere come $5:$8; gli estremi invertiti vengono normalizzati, e spazi, tabulazioni o a capo separano più aree
I riferimenti assoluti e misti conservano il loro testo Range originale; il matching usa le righe da 1 a 1048576 e le colonne da A a XFD, salta le aree malformate o fuori griglia, e mantiene attive le aree sorelle valide senza sollevare una nuova eccezione dal setter
I riferimenti qualificati per foglio ed esterni non sono aree di destinazione; ogni regola appartiene al proprio foglio di lavoro, e i segni di dollaro devono trovarsi in posizioni ordinarie di riferimento A1
La ricerca delle regole, l'eliminazione di celle e intervalli e l'evaluator della formattazione condizionale usano la stessa geometria di destinazione; le regole aggregate contano le aree sovrapposte una sola volta e visitano solo i valori delle celle memorizzate, anche quando la destinazione copre l'intera griglia
Dalla versione 2.384.77, le modifiche di righe e colonne trasformano anche le destinazioni delle regole a asse intero entro la griglia del foglio di lavoro; un'estensione che copre ogni riga o colonna resta completa quando viene modificato quell'asse, mentre le modifiche dell'altro asse spostano, restringono o rimuovono la destinazione
La clonazione degli intervalli mantiene il contratto di copertura completa: ogni area di destinazione deve stare dentro il rettangolo sorgente prima che la regola venga copiata, e una sola intersezione parziale non copia la regola; le destinazioni a asse intero possono essere clonate da una sorgente di riga o colonna intera quando la destinazione resta entro la griglia
Le modifiche interne preservano i domini delle espressioni relative e delle formule di confronto cella dividendo una destinazione quando serve e fondendo le parti che restano equivalenti su un unico ancoraggio comune; la libreria non riproduce la formattazione extra di fine griglia che Excel può copiare implicitamente durante l'inserimento

Esempio

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;

Formati numerici condizionali

Style.SetNumFormatId imposta un formato numerico differenziale indipendentemente dal formato di base della cella di destinazione; l'ID 0 è un reset esplicito a General, mentre un override assente lascia in vigore il formato di base
Gli ID dei formati personalizzati sono 164 + Index, dove Index è il risultato a base zero di Workbook.NumberFormats.Add; il salvataggio XLSX conserva i formati referenziati solo da regole condizionali e aggiorna gli ID quando il pool dei formati viene compattato

Stili condizionali ODS

L'import e l'export ODS conservano gli stili differenziali delle regole di confronto cella e a espressione: colore, nome, dimensione, grassetto, corsivo e sottolineato del carattere, sfondo solido o trasparente, e i formati numerici supportati dal convertitore di formati numerici ODS
Nero esplicito, peso del carattere normale, assenza di sottolineatura e sfondo trasparente restano override; gli attributi assenti dalla regola continuano a usare la formattazione di base della cella di destinazione
I colori a tema e indicizzati vengono esportati come colori risolti, quindi il loro aspetto sopravvive ma la loro identità di tema o palette non fa round-trip attraverso ODS; i metadati dello schema del carattere non hanno una corrispondenza in ODS
ODS usa la normale sottolineatura singola o doppia invece di quella contabile, e i riempimenti a pattern vengono rappresentati da un colore di sfondo; gli override di bordo e allineamento non sono esposti da TXLSDxfStyle
L'import ODS verificato con Excel 16 conserva i colori di evidenziazione, i reset espliciti, la sottolineatura e la formattazione percentuale ma ignora famiglia e dimensione condizionali del carattere; LibreOffice 26.2.5.2 legge quelle proprietà degli stili denominati, e il suo XLSX convertito le conserva in Excel
Dalla versione 2.384.75, le regole di confronto cella e a espressione di ODS usano portatori compatti di celle vuote ripetute sulle loro destinazioni complete, incluse righe intere, colonne intere e intervalli ampi; le regole sovrapposte conservano il loro ordine, e il padding di solo portatore non crea celle memorizzate alla riapertura con HotXLS

Vedere anche