Membri API aggiuntivi della libreria
Questa pagina completa il riferimento dei tipi pubblici che supportano le API principali per workbook, foglio di lavoro, rendering, importazione, diagnostica e visualizzatore ma non richiedono una guida dedicata separata
Filtro e formattazione condizionale
TXLSAutofilter | Add, AddAutofilterData, AssignFrom, Cleare ParseAutofilterData modificano o importano la definizione del filtro; SetRangeBounds(ARow1, ACol1, ARow2, ACol2) ripristina limiti inclusivi a base 1 senza rimuovere i criteri caricati o le forme a discesa, e ignora limiti non positivi o invertiti e un numero di colonne diverso dai campi caricati; Defined, FirstRow, FirstCol, LastCol, LastRowe FieldCount espongono i limiti attivi e il numero di colonne filtrate |
TXLSAutofilterItem | Shape espone il disegno del pulsante di filtro associato all'elemento, e il criterio di filtro caricato è disponibile come record operando TXLSAutofilterDOPER — DataType seleziona la forma dell'operando e grbitSgn porta i bit di segno e flag — per l'ispezione o la modifica round-trip |
TXLSDataBarSpec | AxisColor, AxisIsThemeColor, AxisThemeColorId, AxisThemeColorTinte ClearAxisThemeColor controllano l'asse; Direction, GradientFill, NegativeBarBorderColorSameAsPositive, NegativeBarColor, NegativeBarColorSameAsPositivee NegativeBorderColor controllano l'aspetto delle barre; IsIndexedColor, IndexedColorIndexe ClearIndexedColor gestiscono il colore della barra per indice di tavolozza |
TXLSIconSetSpec | ThresholdEqualsInclude seleziona il confronto inclusivo o esclusivo per ogni soglia delle icone |
TXLSCfValue | IsIndexedColor e IndexedColorIndex segnalano un colore di soglia memorizzato come indice di tavolozza legacy, ClearIndexedColor rimuove di nuovo tale forma, e i colori del tema o letterali restano disponibili tramite le proprietà di accesso esistenti |
TXLSCfValue, TXLSDataBarSpec, TXLSColorScaleSpec, TXLSIconSetSpece TXLSDxfStyle accettano AttachWriteGuardOwner, collegando l'oggetto regola al workbook proprietario così che le modifiche acquisiscano automaticamente un write guard; il proprietario implementa TXLSCondFormatWriteGuardOwner, il cui unico metodo AcquireWriteGuard consegna alla regola il write guard del workbook. TXLSDxfStyle aggiunge FontColorIndex con FontColorIsIndexed più le coppie FillFgColorIndex / FillFgColorIsIndexed e FillBgColorIndex / FillBgColorIsIndexed per i colori delle regole per indice di tavolozza, e gli override del font differenziale FontName, FontSizee FontScheme (stringa vuota, una dimensione in punti o uno slot di font del tema come major / minor) accanto ai membri esistenti bold, italic, underline e color; ogni assegnazione acquisisce il write guard e marca la regola come dirty per la ri-emissione
TXLSConnections, TXLSDataTablese TXLSQueryTables espongono OnAcquireWriteGuard (di tipo TXLSConnectionAcquireWriteGuard, TXLSDataTableAcquireWriteGuarde TXLSQueryTableAcquireWriteGuard), l'hook che i loro percorsi di modifica usano per ottenere il IXLSWorkbookWriteGuard del workbook proprietario prima di apportare modifiche e per far avanzare la generazione del workbook in seguito; il write guard registra StartGeneratione Complete contrassegna la scrittura come completata così che le cache dipendenti possano essere ricostruite
Le connessioni dati preservate portano una descrizione tipizzata: TXLSConnectionKind (xlckUnknown, xlckOdbc, xlckDao, xlckFile, xlckWeb, xlckOleDb, xlckText, xlckAdo) classifica la connessione, TXLSConnectionCredentials (xlccIntegrated, xlccNone, xlccStored, xlccPrompt) ne registra la modalità di autenticazione, e ogni valore di parametro della connessione è contrassegnato con TXLSConnectionParameterValueKind (xlcpvNone, xlcpvBoolean, xlcpvDouble, xlcpvInteger, xlcpvString, xlcpvCell). Le tabelle dati what-if riportano il tipo di definizione memorizzata tramite TXLSDataTableKind
Tabelle dati what-if e raggruppamento pivot
TXLSDataTable | Assign, ContainsCelle IsRoot copiano e ispezionano una tabella; Kind, FirstRow, FirstCol, LastCol, LastRow, AlwaysCalculate, ColumnInputCol, ColumnInputRow, ColumnInputDeleted, RowInputCol, RowInputRowe RowInputDeleted espongono la definizione di calcolo memorizzata |
TXLSDataTables | Add, AddExisting, Delete, Clear, Assign, AdjustForShifte Offset gestiscono la raccolta; FindByCell e FindRoot individuano la tabella che contiene una data cella o che ha origine in essa; Count, Itemse OnChange espongono lo stato della raccolta |
TXLSPivotCacheField | GroupBaseField e GroupParentField espongono le relazioni tra un campo raggruppato e il suo campo di origine o padre |
Le soglie degli insiemi di icone possono essere disegnate o validate via codice: XLSCfIconSetCount riporta quanti simboli definisce un TXLSIconSetType , e XLSBuildCfIconGeometry riempie un TXLSCfIconGeometry con le primitive (TXLSCfIconPrimitive, di tipo TXLSCfIconPrimitiveKind: cfipPolygon, cfipEllipse, cfipRect, cfipLine) e i punti (TXLSCfIconPoint) che disegnano un simbolo, così i renderer personalizzati replicano le forme delle icone incorporate di Excel
Diagnostica, tracciamento delle formule e convalida
TXLSDiagnostic | Code, NativeCode, Message, Severity, ExceptionClass, PartName, RecordId, SheetIndex, SheetNamee StreamOffset identificano una diagnostica di parser, writer o pacchetto |
TXLSDiagnostics | Add aggiunge una diagnostica, Clear azzera la raccolta, e Count più Items enumerano le voci |
TXLSDiagnosticSeverity and TXLSDiagnosticOperation | TXLSDiagnosticSeverity (xlsDiagnosticInfo, xlsDiagnosticWarning, xlsDiagnosticError, xlsDiagnosticFatal) classifica una singola diagnostica e TXLSDiagnosticOperation (xlsOperationNone, xlsOperationOpen, xlsOperationSave, xlsOperationCalculate, xlsOperationExport) nomina la fase che l'ha prodotta; gli handler di OnDiagnostic leggono entrambi dalla TXLSDiagnostic |
TXLSFormulaDebugSession | CurrentStep, DependencyCount, NodeCounte StepCount espongono lo snapshot corrente del debugger e le dimensioni della sua traccia |
TXLSFormulaTracer | StepCount riporta il numero di passi di valutazione registrati |
TXLSImportCheck | AddRule, AddUniqueRule e AddCrossColumnRule configurano predicati di colonna, unicità composita e confronti tipizzati; Check restituisce violazioni strutturate dai valori memorizzati del foglio di lavoro e dalle cache delle formule senza ricalcolo né materializzazione di celle packed; HeaderRow, FirstRow, LastRow, OnVerifyCell, ViolationCounte Violation espongono limiti, callback e risultati; Annotate e KeepOnlyViolations sono operazioni esplicite sul workbook di correzione; vedi schemi di validazione dell'import per tipi, limiti, sistemi di data, identità delle tuple e comportamento in caso di fallimento |
Schemi di validazione dell'import
TXLSImportCheck da lxImportCheck valida una TXLSXWorksheet contro regole di proprietà dell'applicazione; esamina i valori scalari memorizzati e i risultati delle formule memorizzati, con coordinate del foglio di lavoro a base 1 e nessuna conversione implicita testo-numero, testo-data o testo-booleano
Validator := TXLSImportCheck.Create;
try
Validator.HeaderRow := 1;
Rule := Validator.AddRule(2);
Rule.Name := 'quantity';
Rule.Flags := [irRequired, irValueType, irValueRange];
Rule.ValueKind := ivkInteger;
Rule.MinimumValue := 1;
Rule.MaximumValue := 1000;
Validator.AddUniqueRule([1, 3]).Name := 'account-and-region';
Validator.AddCrossColumnRule(4, 5, icLessOrEqual).Name := 'start-before-end';
FailureCount := Validator.Check(Sheet);
if FailureCount > 0 then
Validator.Annotate(Sheet, 'Import validator');
finally
Validator.Free;
end;
HeaderRow > 0 fa partire il controllo dalla riga successiva e ha precedenza su FirstRow; altrimenti FirstRow vale 1 per default; LastRow = 0 usa l'ultima riga usata del foglio di lavoro, mentre un LastRow positivo può includere celle assenti senza crearle; le colonne devono stare tra 1 e 16.384 e i limiti attivi delle righe di dati tra 1 e 1.048.576
Regole di colonna e tipi espliciti
TlxImportColumnRule | Column, Flags, Name, Title, MinLength, MaxLength, Pattern, ValueKinde DateSerialMode configurano una colonna; MinimumValue, MaximumValue, HasMinimum, HasMaximum, MinimumInclusivee MaximumInclusive configurano i limiti; Validate verifica la configurazione dello schema e PreparePattern prepara la regex; i due overload di Check restituiscono un Booleano con un messaggio di errore e opzionalmente un TlxImportViolationKind |
TlxImportRuleFlags | irRequired, irTextLength, irPattern, irUniquee irCallback conservano i controlli esistenti; irValueType abilita ValueKind e irValueRange abilita i limiti configurati; una colonna senza flag non viene controllata |
TlxImportValueKind | ivkAny accetta valori scalari finiti supportati, ivkNumber accetta Variant numerici finiti, ivkInteger richiede inoltre un valore intero, ivkDate accetta Variant di data o serial Excel esplicitamente abilitati, ivkBoolean richiede un Variant Booleano, e ivkText richiede un Variant stringa |
TlxImportDateSerialMode | idsNone è il predefinito e tiene distinti i valori numerici dalle date; idsExcel1900 e idsExcel1904 interpretano esplicitamente i valori numerici per una colonna che usa irValueType con ValueKind = ivkDate |
AddRule(Column) sostituisce e libera ogni regola precedente per quella colonna; i predicati per valore, range, lunghezza e pattern saltano valori mancanti, null e stringhe vuote, mentre irRequired li segnala; l'unicità conserva le distinte politiche descritte di seguito; gli spazi non vuoti restano un valore; un numero non vale come Booleano, una data non vale come numero ordinario, e una stringa dall'aspetto numerico resta testo
Assegnare MinimumValue o MaximumValue abilita quel limite; HasMinimum o HasMaximum possono disabilitarlo di nuovo; entrambi gli interruttori di inclusività valgono True per default; i limiti devono essere numeri o date tipizzati finiti, e due limiti devono essere confrontabili e descrivere un intervallo non vuoto; limiti invertiti, mancanti, incompatibili o vuoti generano un'eccezione prima che la validazione del foglio di lavoro cominci
I limiti numerici confrontano valori numerici e i limiti di data confrontano date; i confronti intero-intero conservano tutti i bit di Int64 e UInt64; i valori di categoria incompatibile falliscono il controllo di range; i predicati di lunghezza del testo e di regex continuano a esaminare la rappresentazione testuale dello scalare, e i controlli regex conservano il comportamento IsMatch esistente, quindi usa ancoraggi come ^...$ quando deve corrispondere il testo completo; una regex non valida disabilita il controllo del pattern per compatibilità
Valori Excel formattati come data
Una cella importata da Excel può contenere un seriale numerico anche quando il suo formato numerico mostra una data; scegli esplicitamente una modalità seriale quando quello è lo schema di import accettato; la modalità incide solo sulla validazione e non cambia mai il valore memorizzato della cella
Rule := Validator.AddRule(4); Rule.Flags := [irRequired, irValueType, irValueRange]; Rule.ValueKind := ivkDate; if Sheet.Workbook.Date1904 then Rule.DateSerialMode := idsExcel1904 else Rule.DateSerialMode := idsExcel1900; Rule.MinimumValue := VarFromDateTime(EncodeDate(2026, 1, 1)); Rule.MaximumValue := VarFromDateTime(EncodeDate(2026, 12, 31));
VarFromDateTime è dichiarato in Variants e EncodeDate in SysUtils; i serial numerici devono essere non negativi e risolversi prima del 1 gennaio 10000; i serial frazionari conservano la loro ora del giorno; il sistema 1900 rifiuta ogni serial da 60 incluso a 61 escluso perché quell'intervallo denota il fantomatico 29 febbraio; il sistema 1904 mappa il serial zero al 1 gennaio 1904
I limiti di data includono l'ora del giorno, quindi un massimo impostato alla mezzanotte del 31 dicembre esclude le ore successive di quel giorno; usa un limite superiore esclusivo al 1 gennaio dell'anno successivo quando l'intero ultimo giorno deve essere accettato; le date testuali come 10/08/2026 restano testo a prescindere dalla modalità seriale configurata
Unicità composita e confronti tra colonne
AddUniqueRule(const AColumns: array of Integer): TlxImportUniqueRule | Aggiunge un vincolo di tupla indipendente su un elenco ordinato, non vuoto di colonne distinte; Name identifica la regola, Title fa da prefisso al suo messaggio, ColumnCount e Columns[Index] a base zero ne espongono i membri, e SkipIncompleteRows vale True per default |
AddCrossColumnRule(ALeftColumn, ARightColumn: Integer; AComparison: TlxImportComparison): TlxImportCrossColumnRule | Aggiunge un confronto sulla stessa riga con LeftColumn e RightColumn in sola lettura, e Comparison, Name, Titlee SkipBlankValues modificabili, che vale True per default |
TlxImportComparison | icEqual, icNotEqual, icLess, icLessOrEqual, icGreatere icGreaterOrEqual selezionano la relazione; coppie numeriche e di date confrontano i loro valori, le coppie Booleane ordinano False prima di True, e le coppie di stringhe confrontano in modo ordinale le unità di codice UTF-16 con distinzione maiuscole/minuscole |
Le chiavi composite conservano il tipo Variant esatto e l'identità testuale di ogni membro; Integer(1), Double(1), la stringa '1', un Booleano e una data sono membri distinti; non c'è case folding, normalizzazione Unicode, parsing per locale né ambiguità di delimitatori; combinazioni come ('ab', 'c') e ('a', 'bc') restano diverse; ogni passaggio di validazione riparte da un indice di tupla fresco
Con SkipIncompleteRows = True, un membro mancante, null o stringa vuota esclude quella riga dall'unicità della tupla; impostandolo su False quei membri entrano con le loro identità Variant originali; un duplicato riporta la prima colonna della tupla come indirizzo della cella e la prima riga corrispondente tramite FirstDuplicateRow
Il irUnique esistente a colonna singola conserva il suo comportamento di matching testuale case-insensitive e salta valori mancanti o null; usa AddUniqueRule([Column]) quando serve identità tipizzata rigorosa per una colonna
I confronti tra colonne non coerciscono mai stringhe in numeri, numeri in Booleani o numeri ordinari in date; categorie miste incompatibili falliscono anche per icNotEqual; i confronti di stringhe distinguono Unicode composto e scomposto, conservano i caratteri null incorporati e usano l'ordinamento prefisso-più-corto-prima; con SkipBlankValues = False, uno dei due operandi vuoti produce una violazione cross-column
Risultati strutturati e workbook di correzione
TlxImportViolation | Row, Col, SheetNamee Address identificano la cella, con Address in notazione A1; ValueText e ErrorText portano le informazioni di visualizzazione; RuleName e Kind identificano la regola configurata e la categoria di fallimento; RelatedColumn identifica il secondo operando per un fallimento cross-column e FirstDuplicateRow identifica la riga originale per i fallimenti di unicità |
TlxImportViolationKind | ivRequired, ivTextLength, ivPattern, ivUnique, ivCallback, ivValueType, ivValueRange, ivCellError, ivFormulaCacheMissing, ivCompositeUniquee ivCrossColumn distinguono le categorie di fallimento supportate |
Check(Sheet) restituisce il numero di violazioni, e ViolationCount più Violation(Index) a base zero enumerano il report; una regola di colonna riporta il suo primo predicato fallito, mentre regole di tupla e di confronto configurate indipendentemente possono aggiungere altre violazioni per la stessa cella; assegna valori Name significativi quando i chiamanti necessitano di identificatori di regola applicativi stabili
Le celle formula vengono validate usando i loro valori in cache memorizzati; una formula senza risultato in cache memorizzato riporta ivFormulaCacheMissing, e un risultato di errore riporta ivCellError; ricalcola esplicitamente prima del controllo quando servono risultati freschi delle formule; la validazione non accede a sorgenti esterne, non altera definizioni di formule e non valuta formule senza cache
OnVerifyCell conserva la firma del callback TlxImportVerifyCell e gira dopo i predicati di colonna applicabili riusciti e i controlli di unicità; restituisce un Booleano e può impostare un messaggio di errore applicativo; i callback devono lasciare invariati il workbook e lo schema di validazione, e le scritture sul workbook vengono rifiutate dal lease di lettura; le eccezioni dei callback si propagano e il lease viene rilasciato per le operazioni successive
Check non annota mai, non elimina righe e non materializza valori packed; usa Annotate dopo il controllo per applicare font rossi e accodare il testo di errore ai commenti esistenti, oppure chiama esplicitamente KeepOnlyViolations per rimuovere le righe senza violazioni e creare un workbook di correzione; questi metodi modificano il foglio di lavoro fornito, quindi chiamali sul workbook voluto dopo aver esaminato il report
La validazione prende in prestito il foglio di lavoro e il workbook per la chiamata sincrona; non adotta la proprietà degli oggetti del chiamante né richiede un workbook di proprietà di un'interfaccia; un lease di lettura protegge gli snapshot rilevanti delle celle memorizzate e l'accesso alle cache delle formule memorizzate per tutta la durata del controllo
Criteri di salvataggio dei collegamenti esterni
TXLSExternalLinkUpdateMode = (xluPromptUser, xluNever, xluAlways);
property IXLSWorkbook.SaveExternalLinkValues: Boolean;
property IXLSWorkbook.UpdateLinks: TXLSExternalLinkUpdateMode;
property TXLSXWorkbook.SaveExternalLinkValues: Boolean;
property TXLSXWorkbook.UpdateLinks: TXLSExternalLinkUpdateMode;
xluPromptUser; xluNever e xluAlways modificano solo la preferenza di aggiornamento memorizzata nel workbook e non autorizzano né avviano mai accessi esterni a file o rete
Audit del calcolo e hint del workbook
function TXLSWorkbook.RecalcAndVerify(MaxIssues: Integer = 10000): TXLSCalculationAuditReport;
function TXLSXWorkbook.RecalcAndVerify(MaxIssues: Integer = 10000): TXLSCalculationAuditReport;
function TXLSWorkbook.RecalcAndVerifyEx(const Options: TXLSRecalcAuditOptions): TXLSCalculationAuditReport;
function TXLSXWorkbook.RecalcAndVerifyEx(const Options: TXLSRecalcAuditOptions): TXLSCalculationAuditReport;
function TXLSWorkbook.RunCalculationAudit(const Options: TXLSRecalcAuditOptions): TXLSCalculationAuditReport;
function TXLSWorkbook.FormulaIsVolatile(Formula: WideString): Boolean;
function TXLSWorkbook.AuditOverlayHash(SheetIndex, Row, Col: Integer): Integer;
function TXLSWorkbook.AuditOverlayRead(SheetIndex, Row, Col: Integer; var Value: Variant): Boolean;
procedure TXLSWorkbook.AuditOverlayWrite(SheetIndex, Row, Col: Integer; const Value: Variant);
procedure TXLSWorkbook.AuditOverlayClear;
TXLSCalculationAuditIssueKind = (xlcaiCacheMismatch, xlcaiParseFailure,
xlcaiMissingFunction, xlcaiMissingName, xlcaiUnsupportedArguments,
xlcaiCircularReference, xlcaiExternalReferenceDenied,
xlcaiExternalReferenceMissing, xlcaiDataTableSkipped, xlcaiCancelled,
xlcaiInternalFailure);
TXLSCalculationAuditIssue = record
Kind: TXLSCalculationAuditIssueKind;
SheetIndex: Integer;
SheetName: WideString;
Row: Integer;
Col: Integer;
Formula: WideString;
Symbol: WideString;
Expected: Variant;
Actual: Variant;
ResultCode: Integer;
Stack: WideString;
ExternalTarget: WideString;
end;
TXLSCalculationAuditIssues = array of TXLSCalculationAuditIssue;
TXLSRecalcAuditProgress = procedure(ASender: TObject;
ACurrent, ATotal: Integer; var ACancel: Boolean) of object;
property WorkbookCodeName: WideString;
property CalculationThreadMode: TXLSCalculationThreadMode;
property ForceFullCalculationState: TXLSOptionalBooleanState;
property RefreshAllOnLoadState: TXLSOptionalBooleanState;
RecalcAndVerify combina i fallimenti dei simboli di formula e le discrepanze dei valori in cache in categorie strutturate e stabili, con coordinate del foglio di lavoro, formule, simboli, valori attesi ed effettivi e troncamento limitato, lasciando invariate le cache e la semantica del workbook. RecalcAndVerifyEx esegue l'audit approfondito: valuta ogni formula una volta attraverso il grafo delle dipendenze in un overlay di risultati isolato, così le celle dipendenti leggono questo passaggio invece delle cache non aggiornate; classifica i fallimenti di valutazione (argomenti non supportati, riferimenti circolari, riferimenti esterni negati o mancanti, tabelle dati saltate, annullamento, fallimenti interni) con codici di risultato, registra uno stack di chiamate limitato per ogni fallimento, rispetta un budget di problemi e un sink di avanzamento/annullamento, e resta in sola lettura a meno che ApplyResults non commetta atomicamente i valori ricalcolati dopo un passaggio interamente riuscito su una struttura del workbook invariataAbsoluteTolerance e RelativeTolerance controllano la segnalazione delle discrepanze, non i valori intermedi di calcolo né l'applicazione esplicita delle cache
Per i risultati numerici, una discrepanza richiede una differenza assoluta superiore a AbsoluteTolerance e, quando la tolleranza relativa è abilitata, superiore a RelativeTolerance * max(abs(Expected), abs(Actual))
L'uguaglianza a una delle due soglie è tollerata; i valori modificati entrano comunque nell'overlay dell'audit così le formule dipendenti vedono il calcolo corrente, e ApplyResults commette quei valori anche quando le loro differenze non sono segnalabili
Un audit in sola lettura non modifica mai le cache archiviateTXLSCalculationAuditReport.Issues è una TXLSCalculationAuditIssue; Kind seleziona una delle categorie xlcai* , Expected / Actual portano i valori confrontati per le discrepanze di cache, Stack è la catena di chiamate di valutazione limitata resa come Sheet!A1 > Sheet!B2 (frame più esterno per primo), e ExternalTarget descrive il workbook esterno per i problemi di riferimento esterno. TXLSRecalcAuditOptions.OnProgress è un sink TXLSRecalcAuditProgress che riceve l'avanzamento dei nodi ACurrent / ATotal e può impostare ACancel per fermare l'audit al confine del nodo successivo con un singolo problema xlcaiCancelled issueRunCalculationAudit è il punto di ingresso del motore a cui delegano i wrapper di audit a livello di workbook e accetta lo stesso record di opzioni. FormulaIsVolatile riporta se una formula forzerebbe un ricalcolo a ogni passaggio (chiamate come NOW, RAND, TODAY, OFFSET, INDIRECT, o un riferimento non risolvibile)AuditOverlayWrite memorizza un valore sostitutivo per una cella (indice del foglio a base uno, riga e colonna a base zero secondo la convenzione del calcolatore), AuditOverlayRead e AuditOverlayHash lo interrogano, e AuditOverlayClear svuota il livello. I valori sovrapposti vengono restituiti dai normali getter del valore delle celle, così il ricalcolo e l'audit approfondito li osservano senza mutare le celle del foglio di lavoro; svuotare l'overlay ripristina i valori memorizzatiFormule delle tabelle e stato IME
property TXLSXTable.ColumnCalculatedFormulaArrayStates[Index: Integer]: TXLSTableFormulaArrayState;
property TXLSXTable.ColumnTotalsFormulaArrayStates[Index: Integer]: TXLSTableFormulaArrayState;
property TDataValidation.ImeMode: TXLSDataValidationImeMode;
property TXLSXDataValidation.ImeModeKind: TXLSDataValidationImeMode;
SaveExternalLinkValues su False omette i record classici XCT e CRN o il sottoalbero sheetDataSet del workbook esterno XLSX, conservando le destinazioni dei collegamenti, i nomi dei fogli, i nomi definiti esterni, le relazioni, i riferimenti delle formule, l'XML sconosciuto e la cache in memoria; ripristinare la proprietà su True sullo stesso workbook consente di serializzare di nuovo quella cache conservata
Ispezione e rimozione dei riquadri attività dei componenti aggiuntivi web
function IXLSWorkbook.HasWebAddinTaskPanes: Boolean;
function IXLSWorkbook.WebAddinTaskPaneCount: Integer;
function IXLSWorkbook.RemoveWebAddinTaskPanes: Integer;
function TXLSXWorkbook.HasWebAddinTaskPanes: Boolean;
function TXLSXWorkbook.WebAddinTaskPaneCount: Integer;
function TXLSXWorkbook.RemoveWebAddinTaskPanes: Integer;
1303 e generano un'eccezione prima di qualsiasi modifica, mentre XLS classico e ODS restituiscono False, 0e -1 senza scansionare il pacchetto
Criteri di visualizzazione degli oggetti del workbook
TXLSObjectDisplayMode = (xlsodmShowAll, xlsodmShowPlaceholders,
xlsodmHideAll);
property IXLSWorkbook.ObjectDisplayMode: TXLSObjectDisplayMode;
property TXLSWorkbook.ObjectDisplayMode: TXLSObjectDisplayMode;
property TXLSXWorkbook.ObjectDisplayMode: TXLSObjectDisplayMode;
property TXLSPaginationModel.ExportObjectPlaceholders: Boolean;
property TXLSPDFExport.ExportObjectPlaceholders: Boolean;
property TXLSSvgExport.ExportObjectPlaceholders: Boolean;
property TXLSPageImageExporter.ExportObjectPlaceholders: Boolean;
property TXLSPrintDocument.ExportObjectPlaceholders: Boolean;
property TXLSXHtmlExportOptions.ExportObjectPlaceholders: Boolean;
workbookPr.showObjects; i valori mancanti assumono per default xlsodmShowAll, i payload Classic riservati lasciati intatti e i token XLSX non supportati restano lossless, e le assegnazioni esplicite emettono solo valori canonici
ExportObjectPlaceholders richiede la stessa politica a basso costo senza decodificare i payload delle immagini né costruire le scene dei grafici
xlsodmHideAll impedisce la raccolta dei disegni e l'espansione degli intervalli guidata dagli oggetti prima che il rendering cominci; la conversione del workbook porta con sé tutti e tre gli stati, ODS scrive disegni completi per la modalità placeholder e omette l'output di disegni e media per la modalità hide-all, e gli sfondi dei fogli di lavoro restano indipendenti
Valori di calibrazione del rendering e snapshot
TXLSRenderCalibration = record
WidthCorrection: Double;
HeightCorrection: Double;
LineSpacing: Double;
CellMarginFactor: Double;
ScreenScaling: Integer;
MeasurementDpi: Integer;
end;
function XLSDefaultRenderCalibration: TXLSRenderCalibration;
function XLSValidateRenderCalibration(const AValue: TXLSRenderCalibration;
out AInvalidField: TXLSRenderCalibrationField): Boolean;
1, 1, 1, 1, 100e 96; le correzioni di larghezza e altezza devono essere maggiori di zero e minori di due, l'interlinea è limitata a (0, 4], i margini delle celle a [0, 4], la scala dello schermo a [100, 500] percento, e i DPI di misurazione a [36, 2400]RenderCalibration, CaptureRenderCalibratione ResetRenderCalibration ; l'assegnazione dell'intero record convalida prima della modifica, e ogni acquisizione restituisce uno snapshot di valori indipendente e immutabile per convenzione relativo a una singola operazione di rendering
Geometria di rendering e misurazione dei caratteri
TXLSRenderGeometryBackend = (xlsrgbAutoFit, xlsrgbPagination, xlsrgbPdf,
xlsrgbSvg, xlsrgbBitmap, xlsrgbPrintPreview, xlsrgbViewer, xlsrgbHtml);
TXLSRenderFont = record
Name: WideString;
Size: Double;
Styles: TXLSRenderFontStyles;
Charset: Byte;
end;
function CreateXLSRenderGeometry(
const ACalibration: TXLSRenderCalibration;
AWorkbookGeneration: UInt64;
ABackend: TXLSRenderGeometryBackend;
ACacheCapacity: Integer = 4096): IXLSRenderGeometry;
property TXLSHTMLExport.RenderGeometry: IXLSRenderGeometry;
property TXLSXHtmlExportSession.RenderGeometry: IXLSRenderGeometry;
IXLSRenderGeometry possiede una calibrazione immutabile, una generazione del workbook, un'identità di backend, un servizio di misurazione e una cache di metriche limitata e locale all'operazione; CreateXLSRenderGeometry usa GDI, mentre CreateXLSPortableCairoRenderGeometry in lxPortableCairo usa byte di font espliciti con FreeType/HarfBuzz su Linux o macOS nativi; MeasureText restituisce larghezza in pixel, altezza, altezza di riga, ascendente, discendente e numero di righe mentre MaximumDigitWidthPixels, ColumnWidthToPixels, PixelsToColumnWidth, PointsToPixels, PixelsToPointse UsableCellWidthPixels forniscono le conversioni geometriche condivise
MarkSheet in due fasi, mentre TXLSPaginationModel.Build acquisisce un servizio per il RenderBackendselezionato; i punti di ingresso PDF, SVG, bitmap, anteprima di stampa, visualizzatore di workbook e HTML selezionano il proprio backend prima dell'output, modificare la calibrazione del workbook non può mutare uno snapshot esistente, e l'output non scrive le dimensioni del foglio di lavoro
xlsrgbHtml nuovo, mentre una TXLSXHtmlExportSession incrementale acquisisce una volta in BeginExport e riutilizza quello snapshot per tutti i fogli; entrambi gli esportatori espongono il servizio conservato tramite RenderGeometry per la calibrazione e la diagnostica della cache
IXLSRenderGeometry — WorkbookGeneration, CacheCapacitye CacheEntryCount — riportano la generazione associata e il riempimento della cache per la diagnostica, e ImplicitWidthMaximumDigitWidthPixels restituisce la misurazione della larghezza della cifra alla base dell'emulazione delle larghezze di colonna implicite
MeasureText riempie un record TXLSRenderTextMetrics (larghezza in pixel, altezza, altezza di riga, ascendente, discendente e numero di righe) a partire da una TXLSRenderFont il cui membro Styles è un insieme di flag TXLSRenderFontStyle (grassetto, corsivo, sottolineato, barrato)
Importazione, generazione di codice, confronto e monitoraggio
TXLSHTMLImport | LoadFromHTML importano il contenuto di tabelle HTML da un flusso o da un file in un foglio di lavoro, con coordinate iniziali, selezione della tabella e separatore decimale facoltativi |
TXLSCodeGen | Language (di tipo TlxCodeGenLanguage: lcgDelphi oppure lcgCppBuilder) seleziona il dialetto sorgente delle istruzioni generate, GenerateToList scrive il codice del workbook generato in un elenco di stringhe, e TlxCodeGenOptions amplia l'output con unioni, larghezze di colonna o formati numerici (cgoMerges, cgoColumnWidths, cgoNumberFormats; fogli e celle vengono sempre emessi) |
TXLSXWorkbookCompare | Compare confronta celle memorizzate tipizzate, testo delle formule, presenza dei fogli e unioni; Options aggiunge cache delle formule, stili base delle celle e geometria di righe o colonne, SetNumericTolerance configura l'uguaglianza numerica, e Count, Diffe Report espongono i risultati ordinati; vedi confronto dei workbook |
TXLSFileMonitor | IntervalMs seleziona l'intervallo di polling e SynchronizeEvent seleziona la consegna sincronizzata dei callback; un handler OnFileChanged può disattivare o distruggere il monitor, o cambiare FileName per iniziare a sorvegliare un altro file |
TXLSCSVLoader and TXLSCSVSaver | Il loader analizza testo delimitato in una griglia in memoria di Variant — ParseFile e ParseStream riempiono la griglia, CellValue, RowCounte ColCount la leggono — con separatore rilevato automaticamente (ValueSeparator) e codifica (TXLSCsvEncoding: ANSI di sistema, UTF-16, UTF-8) e promozione facoltativa dei tipi controllata da DetectTypes e dalle voci ColumnTypes per colonna (TXLSCsvColumnType: auto, text, number, date, boolean, skip); SkipRows, AutoTrim, LocaleTolerantNumberse FieldWidths affinano la gestione della larghezza fissa e delle impostazioni locali. TXLSCSVSaver.SaveAs riscrive la griglia con quoting RFC 4180, e QuoteAllStrings forza il quoting; TXLSTSVSaver deriva dal saver per l'output separato da tabulazioni |
Confronto dei workbook
TXLSXWorkbookCompare in lxCompare confronta due istanze TXLSXWorkbook senza ricalcolare le formule né modificare nessuno dei due workbook; i fogli sono accoppiati per nome case-insensitive, e cambiare solo l'ordine dei fogli non produce una differenza
Il valore predefinito di Options è vuoto e entrambe le tolleranze valgono zero per default; il confronto predefinito riporta fogli aggiunti o rimossi, celle memorizzate aggiunte o rimosse, valori letterali tipizzati cambiati, testo delle formule cambiato e intervalli uniti aggiunti o rimossi
Il confronto dei letterali distingue numeri, testo, valori Booleani, date, errori e vuoti: il numero 1 differisce dal testo '1', un Booleano differisce dalla sua grafia testuale, le date conservano il proprio tipo, e gli errori si confrontano per il loro codice di errore memorizzato; tipi di archiviazione numerici con valori uguali si confrontano come uguali, mentre valori Int64 distinti restano distinti nel confronto esatto
lcoFormulaCachedResults | Per le celle con testo formula corrispondente, confronta il risultato in cache esistente e distingue una cache mancante o invalidata da una disponibile; cache caricate e calcolate con lo stesso valore tipizzato si confrontano come uguali |
lcoCellStyles | Confronta gli stili base risolti alle coordinate delle celle memorizzate corrispondenti, includendo font, riempimenti, sfumature, bordi, allineamento, formati numerici e protezione delle celle; un ordine di inserimento del pool di stili non correlato non crea differenze, e i colori tema si risolvono contro il tema corrente di ogni workbook |
lcoAxisGeometry | Confronta altezze di riga e larghezze di colonna effettive, flag di nascosto, livelli outline, flag collassati e predefiniti del foglio di lavoro; una dimensione esplicita uguale al predefinito effettivo si confronta come uguale a una dimensione implicita |
lcoDefinedNames | Confronta nomi con scope di workbook e di foglio di lavoro, le loro definizioni formula, la visibilità, i commenti e i flag macro; lo scope segue i nomi dei fogli, e l'ordine di inserimento non crea differenze |
lcoDataValidations | Confronta le definizioni di validazione in ordine memorizzato, includendo range di destinazione normalizzati, formule, operatori, prompt, messaggi di errore e flag di controllo; cambiare l'ordine dei range di destinazione dentro una definizione non crea differenze |
lcoConditionalFormats | Confronta le definizioni di formattazione condizionale in ordine memorizzato, includendo priorità effettiva, comportamento stop-if-true, range di destinazione, formule, stili differenziali e impostazioni supportate di color scale, data bar e icon set; gli identificatori del pool di stili e della palette indicizzata si risolvono nei loro valori semantici |
lcoTables | Accoppia le tabelle per nome e confronta intervalli, intestazioni, totali, impostazioni di stile, commenti, nomi delle colonne, etichette, formule, flag di array, nomi univoci, nomi di connessione, criteri di filtro e condizioni di ordinamento; ID di tabella, ID di colonna e ordine di inserimento non creano differenze, mentre gli ID di filtro colore e di stile differenziale di ordinamento si risolvono nell'aspetto |
lcoDrawings | Confronta definizioni tipizzate di disegni in ordine di disegno, conservando l'ordine dei figli dei gruppi e l'ordine dei plot group dei grafici; le definizioni canoniche supportate coprono immagini, caselle di testo, grafici, gruppi, viste slicer tipizzate complete e viste timeline tipizzate, con nodi di disegno opachi o non supportati che generano EXLSSemanticSnapshot |
lcoBlankStyleRegions | Confronta gli stili base risolti alle coordinate senza cella memorizzata su entrambi i lati, includendo predefiniti del foglio di lavoro e overlay di stile virtuali; suddivisioni rettangolari equivalenti si confrontano come uguali, e cambi adiacenti uguali si fondono in rettangoli senza materializzare celle |
lcoRichTextRuns | Confronta font e testo effettivi dei run alle celle di testo memorizzate corrispondenti, eredita il font base per le proprietà di run omesse, ignora run vuoti e fonde run adiacenti con font effettivi uguali; testo semplice equivale a un run rich-text con font predefinito equivalente |
lcoPivotTables | Accoppia definizioni tipizzate di tabelle pivot per nome e confronta binding sorgente, layout, campi, membri delle viste ordinati, aggregazioni dati, filtri, riferimenti di raggruppamento, definizioni calcolate, stili e flag di materializzazione nativi; gli ID di cache e di membri condivisi si risolvono in identità di sorgente e valori tipizzati |
lcoPivotCaches | Accoppia definizioni tipizzate locali di pivot cache per identità di sorgente e confronta metadati di refresh, metadati dei campi, etichette e intervalli raggruppati, domini di membri condivisi non ordinati e valori tipizzati ordinati dei record; membri numerici, testuali, Booleani, di data, di errore e vuoti restano distinti, le date conservano la precisione binary64, e ID di cache e ordine degli slot dei membri condivisi non creano differenze |
lcoSlicerState | Accoppia viste e cache slicer denominate, inclusi binding di colonna di tabella o pivot non OLAP, nomi di tabelle pivot connesse, selezioni tipizzate di membri, impostazioni di cross-filter e ordinamento, didascalia, posizione di scorrimento, layout delle colonne, dimensioni, stile, flag di lock e didascalia e geometria dell'ancora; i binding risolvono ID di tabella, colonna, foglio e cache |
lcoTimelineState | Accoppia viste timeline tipizzate denominate e cache locali non OLAP, inclusi binding di campo sorgente e di tabella pivot connessa, selezione attiva di date, didascalia, livello e limiti del foglio di lavoro; le selezioni inattive omettono gli endpoint di date inutilizzati |
Options ha tipo TlxCompareOptions, un insieme di TlxCompareOption; abilitare un'opzione aggiunge le sue differenze al confronto predefinito
SetFeatureLimits(MaxBytes, MaxItems) valida entrambi i limiti positivi prima di cambiare una delle due impostazioni; MaxFeatureBytes vale 64 MiB per default e MaxFeatureItems 1.000.000, e i setter individuali conservano la stessa validazione atomica
I budget delle feature coprono i byte canonici scollegati aggregati e le voci contate di entrambi i workbook, inclusi run di rich text, nodi XML di filtri, campi pivot, membri di dominio e valori dei record, e connessioni slicer o timeline; i reader verificano conteggi e input testuali grandi prima di costruire l'XML nativo, impongono stream di output limitati, e generano EXLSXSemanticBudget quando un limite viene superato
SetNumericTolerance(AbsoluteTolerance, RelativeTolerance) valida entrambi gli argomenti prima di cambiare una delle due impostazioni; entrambi devono essere finiti e non negativi, e i setter individuali AbsoluteTolerance e RelativeTolerance usano la stessa validazione
Valori letterali numerici e valori in cache numerici si confrontano come uguali quando la loro differenza assoluta è al più AbsoluteTolerance o la loro differenza relativa al valore assoluto maggiore è al più RelativeTolerance; una soglia di zero conserva l'uguaglianza esatta, il calcolo relativo evita l'overflow per valori opposti estremi, e la tolleranza non coercisce testo e non si applica a date, stili o geometria
LeftName e RightName impostano nomi visualizzati opzionali usati dalle righe di Report, con default left e right; i nomi incidono solo sul reporting, non sull'accoppiamento dei fogli né sul confronto
Comparer := TXLSXWorkbookCompare.Create;
try
Comparer.Options := [lcoFormulaCachedResults, lcoCellStyles,
lcoAxisGeometry];
Comparer.SetNumericTolerance(0.001, 0.000001);
DifferenceCount := Comparer.Compare(LeftWorkbook, RightWorkbook);
for I := 0 to DifferenceCount - 1 do
begin
Entry := Comparer.Diff(I);
ReportLines.Add(Entry.Describe);
end;
finally
Comparer.Free;
end;
Compare restituisce il conteggio delle differenze, Count legge quel conteggio in seguito, e Diff(Index) usa indicizzazione a base zero per restituire un TlxCompareDiff di proprietà del comparer; conserva il comparer mentre leggi le sue voci, e ri-acquisisci le voci dopo un altro confronto riuscito
Ogni voce fornisce Kind, Sheet, Row e Col a base 1 dove applicabile, Ref, LeftText, RightTexte valori tipizzati LeftKind / RightKind; TlxCompareValueKind contiene lcvNone, lcvBlank, lcvNumber, lcvText, lcvBoolean, lcvDateTime, lcvErrore lcvFormula, con lcvNone usato per un lato assente o una differenza non di valore
TlxCompareKind conserva lckSheetAdded, lckSheetRemoved, lckCellAdded, lckCellRemoved, lckValueChanged, lckFormulaChanged, lckMergeAddede lckMergeRemoved, e aggiunge lckFormulaCacheChanged, lckStyleChanged, lckRowGeometryChangede lckColumnGeometryChanged
Le differenze di stile portano fingerprint di stile canonici stabili in LeftText e RightText; le differenze di geometria portano lo stato confrontato di dimensione, nascosto, outline e collassato, con Ref che identifica l'intervallo contiguo dell'asse interessato, Row impostato alla sua prima riga e Col a zero per le righe, oppure Col impostato alla sua prima colonna e Row a zero per le colonne
Le differenze di feature usano lckDefinedNameChanged, lckDataValidationChanged, lckConditionalFormatChanged, lckTableChanged, lckDrawingChanged, lckPivotTableChanged, lckPivotCacheChanged, lckSlicerChangedo lckTimelineChanged; Change è lccChanged, lccAddedo lccRemoved, e ogni lato presente porta il fingerprint canonico della propria definizione mentre un lato assente porta una stringa vuota
lckRichTextChanged identifica una definizione di run cambiata alla coordinata della sua cella e porta fingerprint canonici dei run in LeftText e RightText; la tolleranza numerica si applica ai letterali delle celle e alle cache delle formule, mentre le definizioni tipizzate delle feature si confrontano esattamente
I riferimenti delle feature identificano nomi con scope o nomi di tabelle, oppure usano posizioni di sequenza a base 1 per definizioni di validazione, formattazione condizionale e disegni; inserire o spostare una feature ordinata può cambiare diverse posizioni, mentre le voci di nomi a livello di workbook hanno una Sheet vuota
lckBlankStyleRegionChanged identifica un rettangolo vuoto cambiato tramite Row, Col, LastRow e LastCol inclusivi e il suo Ref A1; le coordinate memorizzate sono gestite dal confronto ordinario delle celle e da lcoCellStyles, quindi abilita entrambe le opzioni di stile per ispezionare insieme celle memorizzate e aree vuote
Describe formatta una voce, mentre Report(List) accoda le voci formattate a un TStrings di proprietà del chiamante; un cambio di valore tipizzato include le etichette dei tipi quando i tipi differiscono, e i risultati ordinano per nome del foglio, riga, colonna, tipo di differenza e riferimento anziché per ordine di inserimento delle celle
Il confronto trattiene lease di lettura, attraversa le celle memorizzate tramite snapshot di cursori scollegati e conserva l'archiviazione packed; la geometria partiziona i confini dei metadati memorizzati e gli span compatti di righe ripetute, mentre il confronto degli stili vuoti percorre i confini del rettangolo attivo e delle celle memorizzate senza scandire una griglia rettangolare da un milione di righe; il lavoro cresce con le feature memorizzate, le intersezioni di regioni e le differenze riportate
Un confronto fallito conserva il precedente risultato riuscito; un'assegnazione di tolleranza non valida conserva anch'essa impostazioni e risultato esistenti, mentre passare un workbook nil azzera il risultato e restituisce zero
Questo confronto copre il contenuto delle celle memorizzate della facade XLSX e le definizioni tipizzate selezionate delle feature; l'ortografia delle formule di nomi, validazioni, formattazione condizionale, tabelle e grafici si normalizza attraverso il parser semantico delle formule, mentre le formule calcolate pivot conservano il loro testo di definizione memorizzato
I filtri delle tabelle accettano forme supportate di personalizzati, elenchi di valori, gruppi di date, colori, icone, dinamici e top-count e condizioni di ordinamento; le colonne di filtro indipendenti e le voci di insiemi di valori normalizzano il loro ordine, i default Booleani e le grafie numeriche si normalizzano, e l'ordine delle condizioni di ordinamento resta significativo
Il confronto tipizzato di pivot, slicer e timeline risolve sorgenti locali supportate del foglio di lavoro e binding non OLAP senza aggiornare né valutare la disponibilità; gli hint nativi di disponibilità degli slicer sono metadati di visualizzazione derivati, mentre le selezioni dei membri e i metadati nativi di ordinamento riconosciuti vengono confrontati
Proprietà native di disegno opache, modelli pivot binari incompleti, sorgenti pivot esterne o OLAP, record supplementari di PivotTable grezzi e XML di estensioni, XML di filtri sconosciuti, e attributi o figli di estensioni slicer o timeline non modellate generano EXLSSemanticSnapshot; la conservazione di tali dati non implica equivalenza semantica
Le feature importate selezionate di PivotTable e PivotCache validano anche l'XML nativo conservato prima di confrontare la proiezione tipizzata, includendo metadati annidati dei campi e record di cache; namespace, attributi, figli e payload di estensione sconosciuti falliscono esplicitamente negli stessi limiti cooperativi delle feature, mentre i binding di cache slicer modellate restano supportati
TSimpleDomNode.RawName espone il QName originale dell'elemento accanto alla Name normalizzata dal reader, permettendo l'ispezione sensibile ai namespace senza cambiare il matching esistente dei nomi del parser
Le impostazioni del workbook e i metadati opachi del package restano fuori dal confronto; il confronto degli stili base non valuta l'aspetto della formattazione condizionale o degli stili di tabella, e il confronto dei disegni conserva i confini supportati di immagini, caselle di testo, grafici e gruppi ordinati dello snapshot semantico
Proprietà rich-text effettive
TMsoFbtOpt.StoredPids restituisce gli identificatori di proprietà OfficeArt memorizzati in ordine ordinato, mentre TMsoFbtSp.PersistentFlags espone i flag nativi delle forme senza allocare proprietà o ancore
TMsoShapeContainer.HasPreservedObjectData identifica i byte finali OBJ trattenuti; HasOrdinaryEmbeddedPictureObjectData verifica che le code delle immagini contengano solo record riconosciuti di formato-clipboard e flag-immagine zero, e rifiuta record collegati o sconosciuti senza copiare il payload
TMSOShapeTextBox.HasValidTextRuns verifica i confini dei run TXO memorizzati e i campi riservati senza creare run; TMsoDrawing.HasUnmodeledAppearance identifica dati di disegno nativi saltati dal parser tipizzato, permettendo alla cattura di rifiutare esplicitamente un aspetto irrisolto
TXLSXRichTextRun.BoldSet, ItalicSet, StrikethroughSet, UnderlineSet, VertAlignSete ColorSet distinguono le proprietà del font ereditate dagli override espliciti, inclusi flag false, none, baseline e colori automatici; i setter marcano la proprietà come esplicita anche quando il suo valore coincide con il default iniziale del nuovo run
TXLSXRichText.HasUnsupportedAppearance riporta le proprietà rich native che il modello tipizzato dei run non può rappresentare; la cattura portabile e il confronto effective rich-text rifiutano esplicitamente tali run, mentre le proprietà di run condivise/inline supportate e gli spazi conservano la loro semantica importata
Il confronto effective rich-text applica gli override false espliciti prima di fondere run adiacenti uguali; le proprietà ereditate e quelle cancellate esplicitamente restano distinte durante la deduplicazione delle stringhe condivise e i roundtrip XML supportati
TXMLReader.ResolveNamespaceUri(Prefix, Uri) risolve il binding di namespace corrente in scope senza cambiare la posizione del reader, restituendo false quando non esiste alcun binding; un prefisso vuoto richiede il namespace predefinito, e i QName grezzi restano disponibili per l'ispezione sensibile ai namespace
I record immutabili rich/scene, l'estensione della sorgente di cattura e il contratto di trasferimento HXRSNP02 sono descritti in Output headless portabile
Ispezione staccata di stili e assi
TXLSXWorksheet.ReadSemanticCellStyle(Row, Col) restituisce uno TXLSSemanticCellStyle staccato per coordinate valide a base 1, risolvendo stili memorizzati e packed, predefiniti del foglio di lavoro, overlay di stile applicabili, formati data impliciti, colori indicizzati e colori tema senza materializzare celle né cambiare i pool di stili; la chiamata pubblica acquisisce un lease di lettura ed esclude regole di formattazione condizionale e di stile tabella
TXLSXWorksheet.GetStoredAxisSpans(IsRow) restituisce TXLSXAxisSpans, un array di record TXLSXAxisSpan con FirstIndex e LastIndex inclusivi a base 1; riporta le impronte di metadati di dimensione, nascosto, outline e collassato, conserva gli span compatti di altezze di righe ripetute, e lascia il predefinito effettivo del foglio di lavoro disponibile attraverso le sue proprietà ordinarie
Gli span restituiti descrivono impronte di metadati memorizzati anziché una partizione normalizzata disjointa; le applicazioni che confrontano due assi possono combinare i loro confini iniziali e finali, poi esaminare lo stato effettivo una volta per l'intervallo risultante
TXLSXWorksheet.GetStoredStyleRegions restituisce TXLSXStyleRegions staccati contenenti i confini inclusivi FirstRow, FirstCol, LastRowe LastCol per le impronte di formattazione virtuale compatte; queste impronte possono sovrapporsi, e i chiamanti leggono il loro aspetto effettivo con ReadSemanticCellStyle
TXLSXWorkbook.ReadSemanticFeatures(Kind, Sheet, MaxBytes, MaxItems) restituisce voci TXLSXSemanticFeatures staccate con una Key stabile, byte canonici di Definition e ItemCount contato; i limiti positivi opzionali valgono 64 MiB e 1.000.000 voci per default
TXLSXSemanticFeatureKind contiene xlsxSemanticDefinedNames, xlsxSemanticDataValidations, xlsxSemanticConditionalFormats, xlsxSemanticTables, xlsxSemanticDrawings, xlsxSemanticPivotTables, xlsxSemanticPivotCaches, xlsxSemanticSlicers, xlsxSemanticSlicerCaches, xlsxSemanticTimelinese xlsxSemanticTimelineCaches
Nomi definiti e i tre tipi di cache usano scope a livello di workbook e ammettono un foglio nil; gli altri tipi richiedono un foglio di lavoro appartenente al workbook, regole e disegni conservano la loro sequenza memorizzata, e gli array e i buffer restituiti sono copie di proprietà del chiamante; questi reader acquisiscono lease di lettura ed ereditano la copertura tipizzata e il comportamento esplicito per dati non supportati descritti sopra
TXLSXWorksheet.ReadSemanticRichText(Row, Col, IncludePlainText, MaxBytes, MaxItems, ConsumedItems) restituisce byte canonici di run staccati per coordinate a base 1, oppure un buffer vuoto quando non esiste rich text e IncludePlainText è false; il ConsumedItems: PInteger opzionale riceve il conteggio dei run catturati, e la cattura in plain text conserva l'archiviazione packed
TXLSPivotCacheField.GroupItemTypes[Index] espone il tipo corrispondente a GroupItemLabels[Index] e rifiuta un indice fuori dal dominio delle etichette raggruppate memorizzate
Metadati delle formule e callback di query pivot
TXLSGetCellFormulaText e TXLSCalculator.OnGetCellFormulaText leggono il testo delle espressioni memorizzate usando una SheetIndex a base 1 e Row/Col a base zero, restituendo lxOk o un codice di errore tipizzato e rispettando la protezione formula-hidden; TXLSGetPivotTable e OnGetPivotTable individuano una tabella presa in prestito usando una SheetIndex a base 1 e coordinate di range a base zero
I motori del workbook collegano questi callback opzionali nei contesti di calcolo normale, read-only e isolato; i callback non ricalcolano i target, non aggiornano le sorgenti pivot e non trasferiscono proprietà
TXLSPivotDataConstraint memorizza una FieldName e un Item tipizzato, con TXLSPivotDataConstraints che raccoglie coppie campo/elemento; TXLSPivotTable.GetDataValue interroga un aggregato supportato visibile da uno snapshot scollegato di tabella/cache e IntersectsQueryRange usa limiti del foglio a base 1 incluse le celle dei filtri report modellate
TlxPivotQueryBudget riceve stime di lavoro e memoria in modo sincrono e restituisce se la valutazione può continuare; EXLSPivotQueryBudget e EXLSPivotQueryUnsupported distinguono limiti esauriti da modelli di cache o aggregato non supportati
TXLSPivotCache.QueryModelIsComplete registra la prontezza della query decodificata indipendentemente dalla completezza della riproduzione raw BIFF; QueryRecordsValid espone la validità dei record importati e SetQueryRecordValidity applica la precedenza del format-reader senza aggiornare i record
Byte di code page espliciti
| Membro | Contratto |
|---|---|
XlsEncodeCodePage(Text, CodePage, MaxBytes = -1) | Restituisce un RawByteString con i byte esatti in una page orientata ai byte non zero esplicita, conserva i null incorporati, verifica l'identità di round-trip Unicode, e genera EConvertError per testo non rappresentabile; un MaxBytes non negativo mantiene il prefisso più lungo di caratteri interi che ci sta, mentre -1 lascia la lunghezza senza limiti; la validazione copre il testo originale prima del troncamento |
XlsDecodeCodePage(Bytes, CodePage) | Restituisce un WideString dalla codifica a byte esplicita e conserva i null incorporati; le sequenze di byte malformate seguono il comportamento del decoder installato; la page 0 e la page UTF-16 1200 vengono rifiutate perché questa API non inferisce un locale ANSI né gestisce uno stream di byte UTF-16 |
TXLSBlob.GetCompressedUnicodeString(Index, Count) | Restituisce le esatte unità di codice Unicode BIFF8 compresso da U+0000 a U+00FF, conserva i null incorporati, valida il range di byte richiesto, e non interpreta quei byte tramite una code page |
TXLSBlob.AddRawString | Accoda i byte codificati esatti senza conversione di code page di AnsiString e aggiorna DataLength; un input vuoto non accoda byte |
TXLSCalculator.CodePage, TXLSFormula.FCodePage | Selezionano la codifica a byte esplicita legacy delle formule, con default CP1252; il workbook Classic proprietario sincronizza il suo calcolatore quando viene inizializzato o quando viene chiamato SetCodePage |
TXLSFontList.GetFont, TXLSNumFormatList.GetNumFormatBlob, TXLSStyles.GetStyleBlob | L'argomento opzionale CodePage vale 1252 per default e codifica testo BIFF5; l'output BIFF8 resta Unicode |
TMsoDrawing.StoreNotes | L'argomento opzionale CodePage vale 1252 per default e codifica il testo dei commenti pre-Unicode; il limite esistente di dimensione del record dei commenti ordinari BIFF5 resta; questo non aggiunge campi di autore, rich-text o geometria assenti da quel formato di record |
TXLSCustomName.SetSourceData | Gli argomenti opzionali FileFormat e CodePage identificano i byte NAME grezzi importati e valgono xlExcel97 e 1252 per default; i record grezzi vengono riutilizzati solo quando formato e codifica legacy corrispondono all'output richiesto |
TXLSFormulatArrayItem.GetDataSize, TXLSFormulatArray.GetDataSize, TXLSFormulatArray.GetData, TXLSFormulatArrays.GetDataSize, TXLSFormulatArrays.GetData, TXLSCompiledFormula.GetExternalData | L'argomento opzionale ACodePage vale 1252 per default; dimensione e output legacy degli array di stringhe usano lo stesso conteggio di byte codificati, mentre le stringhe BIFF8 restano Unicode |
Passa direttamente il RawByteString restituito a AddRawString o a un'operazione di stream orientata ai byte; convertirlo in un AnsiString predefinito può ricodificarne i byte sui sistemi FPC nativi
Nomi definiti Classic e blocchi di formule matrici
TXLSCustomName deferred compilation | ClearDefinition libera l'AST compilato di RefersTo mantenendo la stringa di definizione memorizzata e gli eventuali byte NAME grezzi importati, Compile ricostruisce l'AST dalla definizione memorizzata e riporta l'esito, e GetCompiledFormula ricompila automaticamente, così un nome cancellato si risolve di nuovo alla lettura successiva; PeekCompiledFormula restituisce l'AST corrente senza innescare la ricompilazione, e StoredDefinition espone la sorgente di definizione non analizzata |
TXLSCustomName identity and flags | StoreIndex espone la posizione di archiviazione del nome dentro la sua raccolta, NameID la sua identità numerica univoca nel workbook come usata dal motore di calcolo, e IsHidden e IsMacro leggono e scrivono i flag hidden e macro del record NAME BIFF |
TXLSFormulatArray.RowsCount, ColsCount | Riportano le estensioni di righe e colonne del blocco di formule matrici analizzato; entrambe partono da uno e delimitano il dominio di elementi per cella portato dai metodi di emissione |
Pool Classic di font, formati e stili
TXLSFontList stored font attributes | Le proprietà indicizzate rispecchiano la chiave del font memorizzato a un indice della lista a base zero: Name, Size, ColorIndex, Bold, Italic, Strikethroughe Underline si affiancano a OutLineFont, Shadow, SubScript, SuperScript, Familye CharSet per l'ispezione in sola lettura |
TXLSNumFormatList.AddValue, FmtExists | AddValue registra una stringa di formato e restituisce il suo indice, mappando le grafie dei formati built-in sui loro ID canonici e contrassegnando i formati data e ora; FmtExists riporta se una stringa di formato personalizzato è già registrata |
TXLSNumFormatList.IsDateFormat, IsDateFormatValue | IsDateFormat riporta se il formato memorizzato a un indice è contrassegnato come formato data o ora, mentre IsDateFormatValue verifica direttamente una stringa di formato per i token di data e ora |
TXLSStyles.AddStyle, AddBuiltinStyle | AddStyle registra uno stile cella personalizzato con nome collegato a un indice di record XF, e AddBuiltinStyle registra uno stile cella built-in per il suo ID built-in insieme al livello outline usato dagli stili di livello di righe e colonne |
TXLSStyles.BuiltinStyleName | Class function che restituisce il nome visualizzato canonico dello stile cella built-in di Excel per gli ID built-in da 0 a 53; gli ID fuori intervallo restituiscono un nome vuoto così i writer ripiegano sulla forma di byte built-in grezza |
Helper per pacchetti e archiviazione binaria
TXLSXOpaquePackage | LoadWorkbookXmlMetadata acquisisce lo stato XML a livello di workbook, MarkAllPartsClean azzera i flag di modifiche, e WorkbookExtLstXml più WorkbookRootAttributesXml espongono i frammenti XML del workbook preservati; IsDiscardedPart riporta se il nome di una parte è stato rimosso da un'operazione di scarto come la pulizia dei componenti aggiuntivi web |
TXLSFileStorage | Load, LoadFolder, Writee WriteFolder trasferiscono il contenuto dei file composti; Child e Count enumerano le voci figlie, ognuna un TXLSFileItem — un nodo di archiviazione con nome la cui sottoclasse TXLSFileStream porta i byte memorizzati come TXLSBlob con DataSize che riporta la lunghezza del payload |
TXLSBlob | Add aggiunge un altro blob, mentre AddByte, AddWord, AddLong, AddDouble, AddStringe AddWideString aggiungono valori tipizzati; CopyData, CopyMem, FillByte, Write, Clear, Resete Dump gestiscono il contenuto; Buff e DataLength espongono l'archiviazione |
TXLSBlobList | Append, AppendList, CopyDatae Write combinano o emettono voci; Entries e TotalSize espongono lo stato dell'elenco |
TXLSWideStringBuilder | AddString aggiunge testo e Length riporta il numero di caratteri accumulati |
Aggiunte per disegni e visualizzatore di workbook
TXLSFillFormat | PictureFill configura un riempimento di forma basato su immagine, mentre FillType seleziona il tipo di riempimento (pieno, sfumatura, immagine o texture predefinita) che il writer emette |
TXLSShapes | AddScrollBar e AddSpinner creano controlli di modulo — gli oggetti TXLSScrollBar e TXLSSpinner restituiti espongono la geometria del controllo e la cella collegata, e lo spinner aggiunge i limiti di passo Min, Maxe Inc — mentre RegisterScrollBar e RegisterSpinner registrano i controlli caricati da un workbook |
TXLSWorkbookViewer | CanUndo e CanRedo riportano la disponibilità dello storico delle transazioni; ClearSelectedRange, CopySelectedRange, PasteSelectedRangee PasteText operano sull'intervallo selezionato, mentre ReferencePickMode abilita la selezione interattiva di riferimenti a celle o intervalli |
TXLSWorkbookEditHistory | Il motore headless di transazioni di contenuto in lxWorkbookViewer collega in prestito un workbook classico o XLSX e fornisce preflight di protezione degli intervalli, copia e incolla di testo Unicode, cancellazione di intervalli e una transazione di undo/redo per operazione; vedi transazioni di editing headless |
TXLSCellContentSnapshot | Entrambe le classi di fogli di lavoro espongono ReadCellContent(Row, Col) e RestoreCellContent(Snapshot) per cattura e ripristino staccati di contenuto nativo a coordinate a base 1 nel foglio di lavoro di origine; la cattura non valuta formule, non crea celle assenti e non materializza l'archiviazione packed, e il payload immutabile NativeData preserva rich text, cache delle formule e stile della cella; il ripristino diretto è un'operazione di basso livello il cui chiamante deve validare protezione e confini strutturali |
Impaginazione, output di immagini e stampa
XLSValidateCachedChartSceneModel, XLSRecordCachedChartScene | Fanno preflight dei metadati dei grafici in cache senza risolvere celle e registrano primitive limitate di vettori e testo per un grafico scollegato in lxPortableChart, restituendo TXLSPortableSceneObjects e la contabilità di elementi, byte e testo; i punti di ingresso lxPagination conservano la stessa implementazione condivisa per i chiamanti Windows esistenti; il sottoinsieme corrente copre grafici ordinari a colonne, barre, linee, dispersione, torta, ciambella e area a serie singola con un solo plot group primario, e la registrazione richiede metadati nativi validati, punti di cache finiti e strettamente ordinati e un modello di grafico non collegato; vedi registrazione dei grafici in cache |
TXLSGraphicsBackend | DrawTiledImage dipinge ripetutamente uno sfondo del foglio attraverso la regione della pagina ritagliata |
TXLSPaginationModel | CompactRangeMode, IncludeDrawings, IncludeGridlines, IncludeCellBorderse PaintPageBackground controllano il contenuto della pagina; RenderDPI, RenderColorModee RenderSession espongono risoluzione dell'output, gestione del colore e sessione di rendering attiva |
TXLSCellImageExporter | Measure calcola le dimensioni in pixel per intervalli classici o XLSX; ImageFormat, JpegQuality, MaxPixels, MaxBytes, IncludeObjects, IncludeGridlines, IncludeCellBorders, BackgroundColor, TransparentBackground, BeforePaint, AfterPainte PaginationModel configurano e osservano il rendering |
TXLSPageImageExporter | BeforePaint, AfterPaint, MaxPixels, MaxBytes, BackgroundColore TransparentBackground applicano gli stessi hook di disegno e limiti di sicurezza dell'output all'esportazione di immagini impaginate |
TXLSPrintDocument | PrintWorksheet, PrintWorkbooke PrintAllVisibleSheets inviano il contenuto classico o XLSX alla stampante VCL; FirstPage, PrintRangeOnly, Collate, Copies, OnBeforeNewPagee OnAfterGeneratePage controllano il lavoro di stampa |
Modelli di grafici classici e oggetti grafico del foglio di lavoro
TXLSXChartSeries | LineVisible, LineColorRGBe LineWidthPoints descrivono un tratto di serie indipendente; LineStyleSet, LineColorSete LineWidthSet preservano le impostazioni esplicite, e EffectiveLineVisible risolve la convenzione legacy di solo riempimento; MarkerFillSet e MarkerBorderSet distinguono il nero esplicito dai colori automatici dei marker, mentre la registrazione portabile di linee e dispersione supporta diametri dei cerchi da 2 a 72 punti; i setter di colore e larghezza validano prima della mutazione e rispettano i lease di lettura del workbook |
TXLSChartSeries | AddTrendline e AddErrorBars creano annotazioni tipizzate della serie, mentre TrendlineCount e ErrorBarCount riportano le dimensioni delle rispettive raccolte; il campo MarkerSize esistente conserva i twips BIFF grezzi, mentre il getter in sola lettura MarkerSizePoints restituisce quel valore diviso 20, comprese dimensioni in punti frazionarie |
TXLSChartAxis | HasAxcExtFlag verifica un singolo flag AXCEXT grezzo senza richiedere al chiamante di decodificare la maschera di bit |
TXLSChartModel | AxisGroupCount riporta il numero di gruppi di assi primari e secondari decodificati dal grafico |
TXLSCustomChart | AddAreaData aggiunge un elemento area precompilato per il ricollegamento delle formule al salvataggio e ApplyDateAxisModel applica un modello tipizzato di asse data ai record grezzi del grafico; GetStoredRecordInfo legge un ID di record a base zero e il conteggio dei byte senza allocazione, mentre ReadStoredRecord(Index, MaxBytes) verifica il limite di byte prima di restituire byte staccati in TXLSChartStoredRecord, senza valutare formule né modificare cache |
TXLSWorksheet | AddChartObject ancora una cornice di grafico sul foglio di lavoro e la collega al builder condiviso dei grafici |
TXLSXChartLayoutResolver | TryResolve risolve un rettangolo di layout con validazione facoltativa delle dimensioni e ResolveChart calcola i rettangoli di grafico, titolo, legenda, area del tracciato e assi |
Modello di decodifica tipizzato dei grafici
Lo stato decodificato del grafico è esposto come record ed enum semplici, così il codice di ispezione non deve mai percorrere i record BIFF grezzi: TXLSChartInfo porta il riepilogo decodificato del grafico con TXLSChartTypeFamily (cfBar, cfLine, cfPie, cfArea, cfScatter, cfRadar, cfDoughnut, cfSurface, cfBubble), ogni serie riporta il proprio TXLSChartSeriesType, e TXLSChart3DState più TXLSChart3DInfo descrivono le viste tridimensionali. TXLSChartAxisType (catCategory, catValue, catSeries, catDate) e TXLSChartLegendPosition classificano assi e legende, mentre il modello di asse data usa TXLSChartDateUnit (xcduDays, xcduMonths, xcduYears) e TXLSChartDateValues. TXLSCustomChart espone il modello decodificato tramite TXLSChartInfo; le annotazioni di linea di tendenza e barre di errore sono oggetti tipizzati (TXLSChartTrendline, TXLSChartErrorBars) raggiungibili da ogni serie
Record di creazione dei grafici
La creazione di fogli grafico e del builder accetta record semplici invece di grafi di oggetti: TXLSChartTrendlineInfo, TXLSChartErrorBarsInfo, TXLSChartDataLabelsInfoe TXLSChartSeriesStyleInfo riempiono le voci di serie passate a TXLSWorksheets.AddChartSheet e al builder condiviso dei grafici, e TXLSPivotChartInfo descrive l'incorniciatura del PivotChart usata quando un grafico è collegato a una tabella pivot
Ispezione dei riempimenti dei grafici Classic
TXLSCustomChart.GetChartModel decodifica le tabelle di proprietà OfficeArt native supportate e le tabelle di proprietà tertiary nei record GelFrame, incluse le proprietà che seguono voci di payload complesse; la rappresentazione del builder esistente resta supportata, e limiti di tabelle malformati lasciano invariato il riempimento tipizzato precedente e riportano il record non supportato
L'ispezione dei grafici valida l'intero payload memorizzato di testo e annotazioni prima di aggiungere lo stato tipizzato: nomi di trendline troncati o separatori di etichette dati riportano il proprio ID di record tramite _UnsupportedSemanticRecordID, mentre intestazioni SeriesText nil o undersized riportano quel record come non supportato sia per BIFF5 sia per BIFF8; un'estensione di series-text dichiarata che supera il proprio payload genera EReadError, libera il modello parziale e lascia invariati i record del grafico memorizzati
Il getter dei marker e l'ispezione dei riempimenti conservano lo storage grezzo dei grafici; il percorso di cattura dell'aspetto dichiarato valida separatamente i grafici core supportati, mentre checksum di estensioni rich di titoli o forme non verificati restano non supportati
Reader limitati di grafici, stringhe e font memorizzati
TXLSChartStoredBytes è un array di byte staccato e TXLSChartStoredRecord contiene RecordId e Data; questi reader esaminano lo storage sorgente trattenuto senza creare un modello di grafico decodificato né valutare formule
| TXLSCustomChart.GetStoredRecordInfo | Restituisce un ID di record e una lunghezza in byte contata per un indice di record a base zero senza copiarne il payload |
| TXLSCustomChart.ReadStoredRecord | Copia un payload dopo aver verificato l'indice e il MaxBytes non negativo; il limite di byte predefinito è High(Int64) |
| TXLSCustomChart.ReadStoredFormulaLeafInfo | Esamina una foglia BRAI memorizzata coerente usando il calcolatore esatto della sorgente e quote di byte e testo non negative; calcolatori estranei o owner di traduzione restituiscono una foglia non supportata, e AllowUnboundBiff vale False per default |
| TXLSCustomChart.ReadStoredFormulaLiteral | Restituisce un letterale staccato solo dopo gli stessi controlli di provenienza e quota; una foglia non supportata genera EInvalidOperation |
| TXLSCustomChart.SourceBiffVersion, SourceCodePage | Provenienza in sola lettura dei record del grafico trattenuti |
| TXLSStringTable.GetStoredStringLength, ReadStoredString | Conta l'archiviazione UTF-16 esistente usando l'identità a base 1 della stringa nella tabella, poi copia solo quando la quota di caratteri non negativa lo copre; identità non valide e archiviazione UTF-16 incompleta vengono rifiutate |
| TXLSFontList.GetStoredNameLength, ReadStoredName | Verifica la chiave del font memorizzata all'indice a base zero della lista prima di contare o copiare il suo nome sotto una quota di caratteri non negativa |
| TMsoFbtOptItem.HasStoredUnicodeString | Verifica metadati limitati di stringhe Unicode complesse memorizzate senza materializzare una stringa |
| TMsoShapeContainer.HasOrdinaryChartObjectData | Verifica il tipo di oggetto grafico memorizzato, un'identità di oggetto non zero, i flag supportati e l'assenza di dati di coda oggetto sconosciuti |
Manutenzione della tabella delle stringhe condivise ed emissione SST
TXLSStringTable in lxStringTable supporta le stringhe condivise del workbook classico; i membri seguenti coprono la registrazione lato reader, la manutenzione degli slot e l'emissione raw dell'SST per i salvataggi round-trip
KeyExists, AddWithExtras | KeyExists riporta se una stringa occupa già uno slot; AddWithExtras è il companion lato reader di Add che collega il payload raw rgRun rich-text e rgExtRst fonetico alla voce senza incrementare il suo contatore di riferimenti, perché ogni cella che vi fa riferimento lo ripristina in seguito attraverso il normale percorso di add |
Replace, ReplaceIndex | Replace toglie un riferimento allo slot vecchio, liberandolo quando il conteggio arriva a zero, e re-inserisce il testo restituendo lo slot risultante; ReplaceIndex sposta un riferimento dallo slot vecchio al nuovo senza copiare il testo |
AddSSTData, InitExtIndex | AddSSTData emette il payload SST grezzo nella lista di blob del writer; l'overload che prende una tabella di rimappatura dei font-run riscrive ogni indice font FormatRun in uscita ([MS-XLS] §2.5.129) così i run rich seguono il riordino dei font al salvataggio, mentre una tabella vuota mantiene l'emissione legacy verbatim, e InitExtIndex numera i bucket ExtSST sugli slot vivi prima dell'emissione |
SlotCount, ExtIndex, ParsedExtSSTDsst, ParsedExtSSTItemCount, BiffSizeLimit | SlotCount è il limite superiore a base 1 per l'iterazione degli slot con slot eliminati che leggono come vuoti, ExtIndex risolve uno slot nel numero del suo bucket ExtSST o -1 per uno slot non vivo, ParsedExtSSTDsst e ParsedExtSSTItemCount conservano i valori importati degli header EXT/SST, e BiffSizeLimit limita ogni chunk di record emesso — il writer classico lo imposta a 2080 byte per BIFF5 e 8224 per BIFF8 |
Allegati PDF, firme ed esportazione HTML
IXLSPDFAttachmentSource | WriteTo invia in streaming i byte dell'allegato verso l'esportazione PDF senza richiedere che l'esportatore possieda i dati di origine |
TXLSPDFExport | AttachmentDuplicatePolicy seleziona la gestione dei nomi duplicati, AttachmentSpoolThreshold controlla lo spooling degli allegati, e DocumentLanguage scrive i metadati della lingua del documento |
TXLSPDFSignature | TextAlign, TextSize, TextColor, TextBolde TextItalic configurano l'aspetto della firma visibile |
TXLSHTMLExport | ViewMode (di tipo TXLSHtmlViewMode: vista corrente o tabella completa del foglio di calcolo) sceglie la presentazione HTML, mentre HotTrackTargets (insieme di TXLSHtmlHotTrackTarget) e HotTrackColor configurano l'evidenziazione interattiva di celle e oggetti |
TXLSXHtmlExportOptions | ViewMode, HotTrackTargetse HotTrackColor forniscono gli equivalenti controlli di esportazione HTML XLSX |
Audit del calcolo e controlli del workbook
TXLSCalculationAuditReport | Truncated segnala il troncamento per limite di problemi, StackTruncated il troncamento dei frame dello stack di chiamate, e Issues indicizza i problemi di calcolo registrati |
TXLSUserFunctionRegistry | Generation cambia ogni volta che cambia l'insieme di funzioni utente registrate, consentendo di invalidare le associazioni di formule in cache |
EXLSReportRecoverableData | Category identifica la categoria di dati del report recuperabile presentata al chiamante |
IXLSWorkBook | ManualCalculationThreadCount limita il numero di worker usati dal calcolo manuale |
TXLSXDataValidation | HasUnknownImeMode segnala un valore di modalità IME che HotXLS ha preservato ma non riconosce |
TXLSXTable | ColumnCalculatedFormulaArrayRaw e ColumnTotalsFormulaArrayRaw espongono il testo originale delle formule matrici per le colonne della tabella |
Compatibilità del framing legacy del PivotCache
TXLSPivotCache | RawBucketIndex identifica la posizione del substream di origine, RawFramingIsLegacy identifica un framing HotXLS di vecchia generazione, RawModelIsComplete riporta se il modello tipizzato rappresenta ogni record, e CanUpgradeFraming riporta se la riemissione tipizzata su base volontaria è sicura |
TXLSPivotCache | StreamId espone l'identità dello stream della cache classica, SourceDataType espone il tipo di dati di origine classico, e RawHasStorageStream riporta se una cache caricata proveniva da uno stream di archiviazione PivotCache indipendente |
TXLSWorkbook | UpgradeLegacyPivotCacheFraming attiva la riscrittura dei soli framing legacy della cache HotXLS il cui modello tipizzato è completo; la normale riproduzione raw della cache resta il comportamento predefinito |
StreamId viene scritto come record SXStreamID ([MS-XLS] §2.4.303) e ripetuto come campo SXDB dell'intestazione idstm , che deve coincidere; SourceDataType viene scritto come record SXVS ([MS-XLS] §2.4.317: $0001 foglio di lavoro, $0002 esterno, $0004 consolidamento, $0010 scenario) e ripetuto come campo SXDB dell'intestazione vsType , che deve coincidere. Le cache costruite da un intervallo del foglio di lavoro partono dal tipo foglio di lavoro, mentre le cache rilette da un file conservano il valore che il loro substream portava, così il writer BIFF non lascia mai in un campo SXDB il nome di un record che non ha emesso; RawHasStorageStream contrassegna una cache caricata dal proprio stream di archiviazione il cui descrittore globale del workbook precede i record in cache
Integrazione con gli appunti e opzioni di incolla
TXLSPasteOption = (xlpoValuesOnly, xlpoInsertRows, xlpoInsertCols);
TXLSPasteOptions = set of TXLSPasteOption;
function XLSGetClipboardText: WideString;
function XLSSetClipboardText(const Text: WideString): Boolean;
function XLSSetClipboardTextAndHtml(const Text: WideString;
const Html: AnsiString): Boolean;
function XLSBuildHtmlClipboard(const Html: AnsiString): AnsiString;
function XLSEncodeClipboardField(const Text: WideString): WideString;
function XLSClipboardHasText: Boolean;
function XLSParseClipboardGrid(const ClipboardText: WideString;
Loader: TXLSCSVLoader): Boolean;
function XLSClipboardHasXmlSpreadsheet: Boolean;
function XLSGetClipboardXmlSpreadsheet: WideString;
function XLSParseXmlSpreadsheet(const XmlText: WideString;
Loader: TXLSCSVLoader): Boolean;
function XLSClipboardHasBiff8: Boolean;
function XLSGetClipboardBiff8: AnsiString;
function XLSReadClipboardPasteData(out Biff8: AnsiString;
out Text: WideString): Boolean;
function XLSSetClipboardBiff8(const Biff8: AnsiString;
const Text: WideString; const Html: AnsiString = ''): Boolean;
PasteFromClipboard di entrambe le facade: xlpoValuesOnly conserva i valori in cache delle celle formula e salta formati e unioni, mentre xlpoInsertRows e xlpoInsertCols spostano il contenuto esistente prima che il blocco venga depositatoCF_UNICODETEXT (con fallback a CF_TEXT attraverso la code page ANSI corrente), XLSSetClipboardTextAndHtml scrive testo e un payload HTML Format con stile in una sola transazione, XLSBuildHtmlClipboard calcola gli offset in byte CF_HTML per un documento o un frammento, e XLSEncodeClipboardField quotifica un singolo campo separato da tabulazioni. XLSParseClipboardGrid analizza il testo degli appunti come righe separate da tabulazioni con lo stesso tipo di sniffing che TXLSCSVLoader usa per i CSV, XLSParseXmlSpreadsheet esegue lo stesso riempimento del loader su un payload SpreadsheetML 2003 ottenuto con XLSGetClipboardXmlSpreadsheet, e gli helper Biff8 rilevano e leggono lo stream nativo che Excel stesso deposita negli appunti, così i dati incollati conservano valori, formule e formattazione senza perdita di testoXLSReadClipboardPasteData cattura lo stream Biff8 e il testo Unicode sotto un unico lock degli appunti, così un incolla non deve mai riaprire gli appunti tra le due letture e non perde nessuna delle due forme se nel frattempo un'altra applicazione li trattiene. XLSSetClipboardBiff8 è il lato scrittura corrispondente: deposita lo stream del compound file BIFF8, il testo Unicode delimitato da tabulazioni e un payload CF_HTML opzionale in una sola transazione — passa un Text o un Html vuoti per saltare una delle due forme di accompagnamento, mentre la parte Biff8 è obbligatoriaRisoluzione del testo visualizzato della cella
TXLSCellDisplayMode = (xcdmFormattedValue, xcdmFormulaText,
xcdmSuppressedZero);
TXLSCellDisplayOptions = record
ShowFormulas: Boolean;
ShowZeros: Boolean;
SheetProtected: Boolean;
FormulaWidthFactor: Double;
DateSerialZero: Double;
end;
TXLSCellDisplayInput = record
HasFormula: Boolean;
FormulaHidden: Boolean;
IsNumericZero: Boolean;
FormulaText: WideString;
FormattedText: WideString;
end;
TXLSCellDisplayResult = record
Mode: TXLSCellDisplayMode;
Text: WideString;
TreatAsText: Boolean;
EffectiveWidthFactor: Double;
end;
function XLSDefaultCellDisplayOptions: TXLSCellDisplayOptions;
function XLSNormalizeFormulaDisplayText(const FormulaText: WideString): WideString;
function XLSResolveCellDisplay(const Options: TXLSCellDisplayOptions;
const Input: TXLSCellDisplayInput): TXLSCellDisplayResult;
XLSResolveCellDisplay con i propri record di input; XLSDefaultCellDisplayOptions restituisce i default canonici e XLSNormalizeFormulaDisplayText normalizza una stringa formula per la visualizzazioneOggetti di convalida dati classici
TXLSDataValidationType = (xlsDvAny, xlsDvWhole, xlsDvDecimal, xlsDvList,
xlsDvDate, xlsDvTime, xlsDvTextLength, xlsDvCustom);
TXLSDvErrorStyle = (xlsDvErrStop, xlsDvErrWarning, xlsDvErrInformation);
TDVRange = class; { one validation rule over one or more ranges }
TDVRangeList = class; { the per-sheet rule collection }
TDataValidator = class; { engine that checks edits against the rules }
TXLSWorksheet.Add*Validation creano regole TDVRange nella TDVRangeListdel foglio; ogni regola porta il proprio TXLSDataValidationType, i limiti, i messaggi di input e di errore, e il TXLSDvErrorStyle. TDataValidator valuta una modifica rispetto alle regole e riporta se il valore è accettabile, che è anche il controllo alla base delle richieste di convalida di ExcelScansione e risoluzione dei colori indicizzati
TXLSIndexedColorKind = (xickPalette, xickAutomatic, xickSystem, xickInvalid);
TXLSSystemColorRole = (xscrNone, xscrWindowText, xscrWindowBackground,
xscrChartText, xscrChartBackground, xscrChartNeutral, xscrToolTipText);
TXLSIndexedColorResolution = record
Kind: TXLSIndexedColorKind;
RawIndex: Int64;
PaletteSlot: Integer;
SystemColorRole: TXLSSystemColorRole;
ARGB: LongWord;
HasResolvedColor: Boolean;
end;
TXLSNearestIndexedColorMatch = record
InputARGB: LongWord;
ColorIndex: Integer;
PaletteSlot: Integer;
ARGB: LongWord;
DistanceSquared: Double;
ExactMatch: Boolean;
end;
TXLSIndexedColorUsageKind = (xicukFont, xicukFillForeground,
xicukFillBackground, xicukGradient, xicukBorder, xicukConditionalFormat,
xicukChart, xicukShape, xicukComment, xicukWorksheet, xicukOther);
ResolveIndexedColor, NearestIndexedColore ScanIndexedColorUsage : una risoluzione riporta quale delle quattro origini TXLSIndexedColorKind ha prodotto un token indicizzato, insieme al suo slot di tavolozza, al ruolo di colore di sistema e all'ARGB normalizzato; una corrispondenza più vicina aggiunge la distanza RGB al quadrato e il flag di corrispondenza esatta; la scansione d'uso contrassegna ogni categoria di consumo che blocca uno slot di tavolozza. La libreria mantiene una cache interna TXLSIndexedColorMatcher con chiave sulla generazione della tavolozza — FindNearest risponde da lì alle richieste del colore più vicino e UpdateSlot aggiorna un solo slot di tavolozza — così le risoluzioni ripetute restano prive di allocazioniHelper per i riferimenti A1
function XLSA1CellRef(ARow, ACol: Integer): WideString;
function XLSTryParseA1CellRef(const ARef: WideString;
out ARow, ACol: Integer): Boolean;
function XLSTryParseA1RangeRef(const ARef: WideString;
out ARow1, ACol1, ARow2, ACol2: Integer): Boolean;
False per input malformati invece di sollevare eccezioni