Documentație HotXLS

Membri API suplimentari ai bibliotecii

Această pagină completează referința pentru tipurile publice care susțin API-urile principale de registru de lucru, foaie de lucru, randare, import, diagnosticare și vizualizator, dar nu necesită un ghid separat orientat pe sarcini

Filtrare și formatare condiționată

TXLSAutofilterAdd, AddAutofilterData, AssignFrom, Clear și ParseAutofilterData editează sau importă definiția filtrului; Defined, FirstRow, FirstCol, LastCol, LastRow și FieldCount expun limitele active și numărul coloanelor filtrate
TXLSAutofilterItemShape expune desenul butonului de filtru asociat elementului, iar criteriul de filtru încărcat este disponibil ca înregistrare operand TXLSAutofilterDOPER — DataType selectează forma operandului, iar grbitSgn poartă biții de semn și de flag — pentru inspectare sau editare roundtrip
TXLSDataBarSpecAxisColor, AxisIsThemeColor, AxisThemeColorId, AxisThemeColorTint și ClearAxisThemeColor controlează axa; Direction, GradientFill, NegativeBarBorderColorSameAsPositive, NegativeBarColor, NegativeBarColorSameAsPositive și NegativeBorderColor controlează aspectul barei; IsIndexedColor, IndexedColorIndex și ClearIndexedColor gestionează culoarea barei cu index de paletă
TXLSIconSetSpecThresholdEqualsInclude selectează comparație inclusivă sau exclusivă pentru fiecare prag de pictogramă
TXLSCfValueIsIndexedColor și IndexedColorIndex raportează o culoare de prag stocată ca index de paletă de tip vechi, ClearIndexedColor elimină din nou această formă, iar culorile de temă sau culorile literale rămân disponibile prin accessorii existenți

TXLSCfValue, TXLSDataBarSpec, TXLSColorScaleSpec, TXLSIconSetSpec și TXLSDxfStyle acceptă AttachWriteGuardOwner, legând obiectul regulii de registrul de lucru care îl deține, astfel încât editările să obțină automat o gardă de scriere; deținătorul implementează TXLSCondFormatWriteGuardOwner, a cărui unică metodă AcquireWriteGuard înmânează regulii garda de scriere a registrului de lucru. TXLSDxfStyle adaugă FontColorIndex cu FontColorIsIndexed plus perechile FillFgColorIndex / FillFgColorIsIndexed și FillBgColorIndex / FillBgColorIsIndexed pentru culori de regulă cu index de paletă, plus suprascrierile de font diferențial FontName, FontSize și FontScheme (șir gol, o dimensiune în puncte sau un slot de font de temă precum major / minor) alături de membrii existenți bold, italic, underline și de culoare; fiecare atribuire obține garda de scriere și marchează regula ca dirty pentru re-emisie

TXLSConnections, TXLSDataTables și TXLSQueryTables expun OnAcquireWriteGuard (tipurile TXLSConnectionAcquireWriteGuard, TXLSDataTableAcquireWriteGuard și TXLSQueryTableAcquireWriteGuard), hook-ul folosit de căile lor de editare pentru a obține IXLSWorkbookWriteGuard al registrului de lucru deținător înainte de modificare și pentru a avansa apoi generația registrului de lucru; garda înregistrează StartGeneration, iar Complete marchează scrierea ca terminată, astfel încât cache-urile dependente să se poată reconstrui

Conexiunile de date păstrate poartă o descriere tipizată: TXLSConnectionKind (xlckUnknown, xlckOdbc, xlckDao, xlckFile, xlckWeb, xlckOleDb, xlckText, xlckAdo) clasifică conexiunea, TXLSConnectionCredentials (xlccIntegrated, xlccNone, xlccStored, xlccPrompt) înregistrează modul său de autentificare, iar fiecare valoare de parametru a conexiunii este etichetată cu TXLSConnectionParameterValueKind (xlcpvNone, xlcpvBoolean, xlcpvDouble, xlcpvInteger, xlcpvString, xlcpvCell). Tabelele de date what-if raportează tipul definiției lor stocate prin TXLSDataTableKind

Tabele de date what-if și grupare pivot

TXLSDataTableAssign, ContainsCell și IsRoot copiază și inspectează un tabel; Kind, FirstRow, FirstCol, LastCol, LastRow, AlwaysCalculate, ColumnInputCol, ColumnInputRow, ColumnInputDeleted, RowInputCol, RowInputRow și RowInputDeleted expun definiția de calcul stocată
TXLSDataTablesAdd, AddExisting, Delete, Clear, Assign, AdjustForShift și Offset întrețin colecția; FindByCell și FindRoot localizează tabelul care conține sau la care este rădăcină o celulă dată; Count, Items și OnChange expun starea colecției
TXLSPivotCacheFieldGroupBaseField și GroupParentField expun relațiile dintre un câmp grupat și câmpul său sursă sau părinte

Pragurile seturilor de pictograme pot fi randate sau validate programatic: XLSCfIconSetCount raportează câte pictograme definește un TXLSIconSetType, iar XLSBuildCfIconGeometry umple un TXLSCfIconGeometry cu primitivele (TXLSCfIconPrimitive, tip TXLSCfIconPrimitiveKind: cfipPolygon, cfipEllipse, cfipRect, cfipLine) și punctele (TXLSCfIconPoint) care desenează o pictogramă, astfel încât randatoarele personalizate să corespundă formelor de pictograme incorporate în Excel

Diagnosticare, urmărirea formulelor și validare

TXLSDiagnosticCode, NativeCode, Message, Severity, ExceptionClass, PartName, RecordId, SheetIndex, SheetName și StreamOffset identifică un diagnostic de parser, writer sau pachet
TXLSDiagnosticsAdd adaugă un diagnostic, Clear resetează colecția, iar Count plus Items enumeră intrările sale
TXLSDiagnosticSeverity și TXLSDiagnosticOperationTXLSDiagnosticSeverity (xlsDiagnosticInfo, xlsDiagnosticWarning, xlsDiagnosticError, xlsDiagnosticFatal) clasifică un diagnostic, iar TXLSDiagnosticOperation (xlsOperationNone, xlsOperationOpen, xlsOperationSave, xlsOperationCalculate, xlsOperationExport) numește faza care l-a produs; handler-ele OnDiagnostic le citesc pe ambele din TXLSDiagnostic-ul livrat
TXLSFormulaDebugSessionCurrentStep, DependencyCount, NodeCount și StepCount expun instantaneul curent al debuggerului și dimensiunile urmei sale
TXLSFormulaTracerStepCount raportează numărul pașilor de evaluare înregistrați
TXLSImportCheckAddRule, Annotate, KeepOnlyViolations și Violation configurează și rulează validarea importului; HeaderRow, FirstRow, LastRow, OnVerifyCell și ViolationCount expun limitele, callback-ul și numărul de rezultate. Regulile sunt obiecte TlxImportColumnRule ale căror TlxImportRuleFlags selectează verificările pentru o coloană de foaie de lucru numerotată de la unu, iar fiecare TlxImportViolation raportează rândul, coloana, textul ofensator și mesajul de eroare
TXLSExternalLinkUpdateMode = (xluPromptUser, xluNever, xluAlways);

property IXLSWorkbook.SaveExternalLinkValues: Boolean;
property IXLSWorkbook.UpdateLinks: TXLSExternalLinkUpdateMode;
property TXLSXWorkbook.SaveExternalLinkValues: Boolean;
property TXLSXWorkbook.UpdateLinks: TXLSExternalLinkUpdateMode;
      
Ambele motoare au implicit salvarea valorilor din cache și xluPromptUser; xluNever și xluAlways schimbă doar preferința de actualizare stocată în registrul de lucru și nu autorizează și nu inițiază niciodată accesul la fișiere externe sau la rețea

Audit de calcul și indicii pentru registrul de lucru

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 combină eșecurile de simboluri de formule și nepotrivirile valorilor din cache în categorii structurate stabile, cu coordonate ale foii de lucru, formule, simboluri, valori așteptate și reale și trunchiere delimitată, lăsând neschimbate cache-urile și semantica registrului de lucru. RecalcAndVerifyEx rulează auditul profund: evaluează fiecare formulă o singură dată, prin graful de dependențe, într-un strat izolat de rezultate, astfel încât celulele dependente citesc această trecere în locul cache-urilor învechite, clasifică eșecurile de evaluare (argumente nesuportate, referințe circulare, referințe externe refuzate sau lipsă, tabele de date omise, anulare, eșecuri interne) cu coduri de rezultat, înregistrează un call stack delimitat per eșec, respectă un buget de probleme și un sink de progres/anulare și rămâne read-only, cu excepția cazului în care ApplyResults comite atomic valorile recalculate după o trecere complet reușită pe o structură de registru neschimbată
Fiecare element din TXLSCalculationAuditReport.Issues este un TXLSCalculationAuditIssue; Kind selectează una dintre categoriile xlcai*, Expected / Actual transportă valorile comparate pentru nepotrivirile de cache, Stack este lanțul delimitat de apeluri de evaluare randat ca Sheet!A1 > Sheet!B2 (cadrul cel mai exterior primul), iar ExternalTarget descrie registrul extern pentru problemele de referințe externe. TXLSRecalcAuditOptions.OnProgress este un sink TXLSRecalcAuditProgress care primește progresul nodurilor ACurrent / ATotal și poate seta ACancel pentru a opri auditul la următoarea graniță de nod, cu o singură problemă xlcaiCancelled
RunCalculationAudit este punctul de intrare al motorului către care delegă învelișurile de audit la nivel de registru de lucru și acceptă aceeași înregistrare de opțiuni. FormulaIsVolatile raportează dacă o formulă ar forța o recalculare la fiecare trecere (apeluri precum NOW, RAND, TODAY, OFFSET, INDIRECT sau o referință de nerezolvat)
Stratul overlay de audit este un strat what-if deasupra cache-urilor de celule: AuditOverlayWrite stochează o valoare de înlocuire pentru o celulă (index de foaie cu bază unu, rând și coloană cu bază zero, conform convenției calculatorului), AuditOverlayRead și AuditOverlayHash îl interoghează, iar AuditOverlayClear golește stratul. Valorile suprapuse sunt returnate de getter-ele obișnuite de valori ale celulelor, astfel încât recalcularea și auditul profund le observă fără a muta celulele foii de lucru; golirea stratului restabilește valorile stocate
Proprietățile de indicii ale registrului de lucru păstrează stările missing, false, true, disabled, automatic și manual acolo unde formatul sursă le suportă; ele nu pornesc niciodată la deschidere calcul, reîmprospătare, lucru pe sistemul de fișiere, rețea sau baze de date

Formule de tabel și stare IME

property TXLSXTable.ColumnCalculatedFormulaArrayStates[Index: Integer]: TXLSTableFormulaArrayState;
property TXLSXTable.ColumnTotalsFormulaArrayStates[Index: Integer]: TXLSTableFormulaArrayState;
property TDataValidation.ImeMode: TXLSDataValidationImeMode;
property TXLSXDataValidation.ImeModeKind: TXLSDataValidationImeMode;
      
Formulele de coloană calculată și de rând de totaluri păstrează stări de tablou independente — absent, false, true sau unknown — inclusiv valorile lexicale surse neatinse și editările structurale ale coloanelor; formulele matrice sunt respinse de extinderea scalară a rândurilor, nu sunt modificate silențios
Modelele IME folosesc mapări explicite BIFF și OOXML, păstrează valorile sursă necunoscute și resping valoarea disabled, existentă doar în OOXML, când documentul este autorat pentru Classic XLS
Setarea SaveExternalLinkValues la False omite înregistrările clasice XCT și CRN sau subarborele sheetDataSet al cărții externe XLSX, păstrând în același timp țintele legăturilor, numele foilor, numele definite externe, relațiile, referințele formulelor, XML-ul necunoscut și cache-ul din memorie; restabilirea proprietății la True pe același registru de lucru poate serializa din nou acest cache păstrat
Token-urile sursă nesuportate neatinse rămân păstrate octet cu octet sau lexical, atribuirile explicite emit doar valori legale, părțile XLSX neschimbate păstrează calea de copiere comprimată, iar conversia XLS/XLSX transferă ambele politici; registrele de lucru ODS și text nu au o declarație echivalentă și se deschid cu valorile implicite, în timp ce părțile de legături DDE și OLE păstrate nu sunt tratate ca cache de celule din registre externe

Inspecția și eliminarea panourilor de activități ale programelor de completare 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;
      
Metodele de inspecție recunosc doar relații interne cu rădăcina în pachet al căror tip corespunde exact tipului de relație al panoului de activități al programului de completare web; relațiile externe, tipurile cu majuscule diferite, relațiile foilor de lucru și părțile cu nume similar sunt ignorate
Eliminarea validează mai întâi întregul graf de relații, inclusiv țintele normalizate, restricția la rădăcina pachetului, ciclurile, părțile lipsă și limitele de resurse; apoi elimină toate relațiile de rădăcină corespondente și doar părțile accesibile care nu sunt partajate de o altă relație păstrată, împreună cu părțile de relații aparținând surselor șterse
Operația este atomică și idempotentă, părțile sursă eliminate nu pot reapărea prin salvarea cu copiere comprimată, iar tipurile de conținut sunt reconstruite din pachetul rămas; grafurile malformate adaugă codul de diagnostic 1303 și ridică o excepție înainte de modificare, în timp ce Classic XLS și ODS returnează False, 0 și -1 fără scanarea pachetului

Politica de afișare a obiectelor registrului de lucru

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;
      
Classic XLS mapează cele trei stări în înregistrarea sa de afișare a obiectelor registrului de lucru, iar XLSX le mapează în workbookPr.showObjects; valorile lipsă revin implicit la xlsodmShowAll, payload-urile Classic rezervate neatinse și token-urile XLSX nesuportate rămân fără pierderi, iar atribuirile explicite emit doar valori canonice
Vizualizatorul randează modul placeholder ca casete ușoare care poartă tipul, numele, textul și textul alternativ disponibil ale obiectului; exporterele păstrează obiectele complete implicit, iar setarea ExportObjectPlaceholders cere aceeași politică de cost redus, fără decodarea payload-urilor de imagini sau construirea scenelor de diagramă
xlsodmHideAll împiedică colectarea desenelor și extinderea intervalurilor condusă de obiecte înainte de începerea randării; conversia registrului de lucru transportă toate cele trei stări, ODS scrie desene complete pentru modul placeholder și omite ieșirea de desene și media pentru modul hide-all, iar fundalurile foilor de lucru rămân independente

Valori de calibrare a randării și instantanee

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;
      
Valorile implicite sunt 1, 1, 1, 1, 100 și 96; corecțiile de lățime și înălțime trebuie să fie mai mari decât zero și mai mici decât doi, spațierea liniilor este limitată la (0, 4], marginile celulelor la [0, 4], scalarea ecranului la [100, 500] la sută, iar DPI-ul de măsurare la [36, 2400]
Registrele de lucru Classic XLS și XLSX expun aceiași membri RenderCalibration, CaptureRenderCalibration și ResetRenderCalibration; atribuirea întregii înregistrări validează înainte de modificare, iar fiecare captură returnează un instantaneu independent de valori imuabil prin convenție pentru o singură operație de randare

Geometria randării și măsurarea fonturilor

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 deține o calibrare imuabilă, generația registrului de lucru, identitatea backend-ului, o suprafață de măsurare GDI și un cache delimitat de metrici local operației; MeasureText returnează lățimea și înălțimea în pixeli, înălțimea liniei, ascendentul, descendentul și numărul de linii, în timp ce MaximumDigitWidthPixels, ColumnWidthToPixels, PixelsToColumnWidth, PointsToPixels, PixelsToPoints și UsableCellWidthPixels furnizează conversiile geometrice comune
Identitatea cache-ului include backend-ul, generația registrului de lucru, toate valorile de calibrare, numele fontului, dimensiunea exactă, stilurile, charset-ul, lățimea de împachetare și textul; corecția de lățime și înălțime se aplică o singură dată la măsurarea textului, spațierea liniilor afectează doar înălțimea pe mai multe linii, corecția marginii celulei afectează doar lățimea utilă a textului, iar scalarea ecranului afectează doar emularea lățimii maxime a cifrei pentru lățimile implicite ale coloanelor
AutoFit din Classic XLS și XLSX captează un serviciu pentru fiecare operație publică, inclusiv măsurarea intervalurilor îmbinate și a MarkSheet în două faze, în timp ce TXLSPaginationModel.Build captează un serviciu pentru RenderBackend selectat; punctele de intrare PDF, SVG, bitmap, previzualizare tipărire, vizualizator de registru și HTML își selectează propriul backend înainte de ieșire, schimbarea calibrării registrului de lucru nu poate muta un instantaneu existent, iar ieșirea nu scrie dimensiunile foilor de lucru
Apelurile HTML directe pe registru de lucru, foaie de lucru și interval capturează un serviciu xlsrgbHtml proaspăt, în timp ce un TXLSXHtmlExportSession incremental capturează o dată în BeginExport și reutilizează acel instantaneu pentru toate foile; ambii exporteri expun serviciul reținut prin RenderGeometry pentru diagnosticarea calibrării și a cache-ului
Proprietățile doar-citire WorkbookGeneration, CacheCapacity și CacheEntryCount ale IXLSRenderGeometry raportează generația legată și gradul de umplere al cache-ului pentru diagnosticare, iar ImplicitWidthMaximumDigitWidthPixels returnează măsurătoarea lățimii cifrei din spatele emulării lățimilor implicite de coloană
MeasureText umple o înregistrare TXLSRenderTextMetrics (lățime și înălțime în pixeli, înălțimea liniei, ascendent, descendent și număr de linii) dintr-un TXLSRenderFont al cărui membru Styles este o mulțime de flag-uri TXLSRenderFontStyle (bold, italic, subliniat, tăiat)

Import, generare de cod, comparare și monitorizare

TXLSHTMLImportSupraîncărcările LoadFromHTML importă conținutul unui tabel HTML dintr-un flux sau fișier într-o foaie de lucru, cu coordonate de start, selecție de tabel și separator zecimal opționale
TXLSCodeGenLanguage (tipul TlxCodeGenLanguage: lcgDelphi sau lcgCppBuilder) selectează dialectul sursă al instrucțiunilor generate, GenerateToList scrie codul de registru de lucru generat într-o listă de șiruri, iar TlxCodeGenOptions lărgește ieșirea cu îmbinări, lățimi de coloane sau formate numerice (cgoMerges, cgoColumnWidths, cgoNumberFormats; foile și celulele sunt emise întotdeauna)
TXLSXWorkbookCompareLeftName și RightName etichetează intrările, Compare efectuează comparația, iar Diff expune intrările TlxCompareDiff rezultate, clasificate prin TlxCompareKind
TXLSFileMonitorIntervalMs selectează intervalul de polling, iar SynchronizeEvent selectează livrarea sincronizată a callback-ului; un handler OnFileChanged poate dezactiva sau distruge monitorul, sau poate schimba FileName pentru a începe urmărirea altui fișier
TXLSCSVLoader și TXLSCSVSaverLoader-ul parsează text delimitat într-o grilă de Variants în memorie — ParseFile și ParseStream umplu grila, iar CellValue, RowCount și ColCount o citesc înapoi — cu separator (ValueSeparator) și encodare (TXLSCsvEncoding: ANSI de sistem, UTF-16, UTF-8) detectate automat și cu promovare opțională de tipuri controlată de DetectTypes și de intrările per coloană ColumnTypes (TXLSCsvColumnType: auto, text, număr, dată, boolean, skip); SkipRows, AutoTrim, LocaleTolerantNumbers și FieldWidths rafinează tratarea lățimilor fixe și a locale-urilor. TXLSCSVSaver.SaveAs scrie grila înapoi cu citare RFC 4180, iar QuoteAllStrings forțează citarea; TXLSTSVSaver derivă din saver pentru ieșire separată prin tab

Asistenți pentru pachete și stocare binară

TXLSXOpaquePackageLoadWorkbookXmlMetadata capturează starea XML la nivel de registru de lucru, MarkAllPartsClean resetează indicatorii dirty, iar WorkbookExtLstXml plus WorkbookRootAttributesXml expun fragmentele XML păstrate ale registrului de lucru; IsDiscardedPart raportează dacă un nume de parte a fost eliminat de o operație de aruncare, cum ar fi curățarea programelor de completare web
TXLSFileStorageLoad, LoadFolder, Write și WriteFolder transferă conținutul fișierului compus; Child și Count enumeră intrările copil, fiecare un TXLSFileItem — un nod de stocare numit, a cărui subclasă TXLSFileStream transportă octeții stocați ca TXLSBlob, cu DataSize raportând lungimea payload-ului
TXLSBlobAdd adaugă alt blob, în timp ce AddByte, AddWord, AddLong, AddDouble, AddString și AddWideString adaugă valori tipizate; CopyData, CopyMem, FillByte, Write, Clear, Reset și Dump gestionează conținutul; Buff și DataLength expun stocarea
TXLSBlobListAppend, AppendList, CopyData și Write combină sau emit intrări; Entries și TotalSize expun starea listei
TXLSWideStringBuilderAddString adaugă text, iar Length raportează numărul acumulat de caractere

Adăugiri pentru desenare și vizualizatorul de registre de lucru

TXLSFillFormatPictureFill configurează o umplere de formă bazată pe imagine, în timp ce FillType selectează tipul de umplere (plină, gradient, imagine sau textură prestabilită) pe care îl emite writer-ul
TXLSShapesAddScrollBar și AddSpinner creează controale de formular — obiectele TXLSScrollBar și TXLSSpinner returnate expun geometria controlului și celula legată, iar spinner-ul adaugă limitele de pas Min, Max și Inc — în timp ce RegisterScrollBar și RegisterSpinner înregistrează controalele încărcate dintr-un registru de lucru
TXLSWorkbookViewerCanUndo și CanRedo raportează disponibilitatea istoricului de editare, în timp ce ReferencePickMode activează selecția interactivă a referinței unei celule sau a unui interval

Paginare, ieșire de imagini și tipărire

TXLSGraphicsBackendDrawTiledImage pictează repetat un fundal de foaie pe regiunea de pagină decupată
TXLSPaginationModelCompactRangeMode, IncludeDrawings, IncludeGridlines, IncludeCellBorders și PaintPageBackground controlează conținutul paginii; RenderDPI, RenderColorMode și RenderSession expun rezoluția de ieșire, tratarea culorilor și sesiunea de randare activă
TXLSCellImageExporterMeasure calculează dimensiunile în pixeli pentru intervale clasic sau XLSX; ImageFormat, JpegQuality, MaxPixels, MaxBytes, IncludeObjects, IncludeGridlines, IncludeCellBorders, BackgroundColor, TransparentBackground, BeforePaint, AfterPaint și PaginationModel configurează și observă randarea
TXLSPageImageExporterBeforePaint, AfterPaint, MaxPixels, MaxBytes, BackgroundColor și TransparentBackground aplică aceleași hook-uri de desenare și aceleași limite de siguranță ale ieșirii exportului de imagini paginat
TXLSPrintDocumentPrintWorksheet, PrintWorkbook și PrintAllVisibleSheets trimit conținut clasic sau XLSX către imprimanta VCL; FirstPage, PrintRangeOnly, Collate, Copies, OnBeforeNewPage și OnAfterGeneratePage controlează lucrarea de tipărire

Modele de diagrame clasice și obiecte diagramă în foaia de lucru

TXLSChartSeriesAddTrendline și AddErrorBars creează adnotări tipizate de serie, în timp ce TrendlineCount și ErrorBarCount raportează dimensiunile colecțiilor lor
TXLSChartAxisHasAxcExtFlag testează un flag brut AXCEXT fără a obliga apelanții să decodeze masca de biți
TXLSChartModelAxisGroupCount raportează numărul de grupuri de axe primare și secundare decodate din diagramă
TXLSCustomChartAddAreaData adaugă un element de tip zonă preconstruit pentru rebinding-ul formulelor la salvare, iar ApplyDateAxisModel aplică un model tipizat de axă de dată înregistrărilor brute ale diagramei
TXLSWorksheetAddChartObject ancorează un cadru de diagramă pe foaia de lucru și îl conectează la builder-ul partajat de diagrame
TXLSXChartLayoutResolverTryResolve rezolvă un dreptunghi de layout cu validare opțională de dimensiune, iar ResolveChart calculează dreptunghiurile diagramei, titlului, legendei, zonei de trasare și axelor

Model tipizat de decodare a diagramelor

Starea decodată a diagramei este expusă ca înregistrări și enumerări simple, astfel încât codul de inspecție nu trebuie să parcurgă înregistrări BIFF brute: TXLSChartInfo transportă rezumatul decodat al diagramei cu TXLSChartTypeFamily (cfBar, cfLine, cfPie, cfArea, cfScatter, cfRadar, cfDoughnut, cfSurface, cfBubble), fiecare serie raportează TXLSChartSeriesType, iar TXLSChart3DState plus TXLSChart3DInfo descriu vizualizările tridimensionale. TXLSChartAxisType (catCategory, catValue, catSeries, catDate) și TXLSChartLegendPosition clasifică axele și legendele, iar modelul de axă de dată folosește TXLSChartDateUnit (xcduDays, xcduMonths, xcduYears) și TXLSChartDateValues. TXLSCustomChart expune modelul decodat prin TXLSChartInfo; adnotările de linii de tendință și bare de eroare sunt obiecte tipizate (TXLSChartTrendline, TXLSChartErrorBars), accesibile din fiecare serie

Înregistrări pentru crearea diagramelor

Crearea foilor de diagramă și a builder-ului acceptă înregistrări simple în loc de grafuri de obiecte: TXLSChartTrendlineInfo, TXLSChartErrorBarsInfo, TXLSChartDataLabelsInfo și TXLSChartSeriesStyleInfo umplu intrările de serie transmise către TXLSWorksheets.AddChartSheet și builder-ul partajat de diagrame, iar TXLSPivotChartInfo descrie încadrarea diagramei pivot folosită când o diagramă este atașată unui tabel pivot

Atașamente PDF, semnături și export HTML

IXLSPDFAttachmentSourceWriteTo transmite în flux octeții atașamentului către exportul PDF, fără ca exporterul să dețină datele sursă
TXLSPDFExportAttachmentDuplicatePolicy selectează tratarea numelor duplicate, AttachmentSpoolThreshold controlează spooling-ul atașamentelor, iar DocumentLanguage scrie metadatele limbii documentului
TXLSPDFSignatureTextAlign, TextSize, TextColor, TextBold și TextItalic configurează aspectul vizibil al semnăturii
TXLSHTMLExportViewMode (tipul TXLSHtmlViewMode: vizualizarea curentă sau tabelul complet al foii de calcul) alege prezentarea HTML, în timp ce HotTrackTargets (mulțime de TXLSHtmlHotTrackTarget) și HotTrackColor configurează evidențierea interactivă a celulelor și a obiectelor
TXLSXHtmlExportOptionsViewMode, HotTrackTargets și HotTrackColor furnizează comenzile echivalente pentru exportul HTML XLSX

Audit de calcul și controale ale registrului de lucru

TXLSCalculationAuditReportTruncated raportează o trunchiere la limita de probleme, StackTruncated raportează trunchierea cadrelor call stack-ului, iar Issues indexează problemele de calcul înregistrate
TXLSUserFunctionRegistryGeneration se schimbă ori de câte ori se schimbă setul de funcții utilizator înregistrate, permițând invalidarea legărilor de formule din cache
EXLSReportRecoverableDataCategory identifică categoria de date de raport recuperabile prezentată apelantului
IXLSWorkBookManualCalculationThreadCount limitează numărul de workeri folosiți de calculul manual
TXLSXDataValidationHasUnknownImeMode raportează o valoare de mod IME pe care HotXLS a păstrat-o, dar nu o recunoaște
TXLSXTableColumnCalculatedFormulaArrayRaw și ColumnTotalsFormulaArrayRaw expun textul original al formulelor matrice pentru coloanele tabelului

Compatibilitate cu framing-ul PivotCache de tip vechi

TXLSPivotCacheRawBucketIndex identifică poziția subfluxului sursă, RawFramingIsLegacy identifică un framing HotXLS de tip vechi, RawModelIsComplete raportează dacă modelul tipizat reprezintă fiecare înregistrare, iar CanUpgradeFraming raportează dacă re-emisia tipizată opt-in este sigură
TXLSPivotCacheStreamId expune identitatea fluxului de cache clasic, SourceDataType expune tipul datelor sursă clasice, iar RawHasStorageStream raportează dacă un cache încărcat a provenit dintr-un flux de stocare PivotCache independent
TXLSWorkbookUpgradeLegacyPivotCacheFraming activează rescrierea doar a framing-urilor de cache HotXLS de tip vechi al căror model tipizat este complet; re-redarea brută obișnuită a cache-ului rămâne implicită

StreamId este scris ca înregistrarea SXStreamID ([MS-XLS] §2.4.303) și repetat ca câmpul idstm din antetul SXDB, care trebuie să-i fie egal; SourceDataType este scris ca înregistrarea SXVS ([MS-XLS] §2.4.317: $0001 foaie de lucru, $0002 extern, $0004 consolidare, $0010 scenariu) și repetat ca câmpul vsType din antetul SXDB, care trebuie să-i fie egal. Cache-urile construite dintr-un interval de foaie de lucru pornesc cu tipul foaie de lucru, în timp ce cache-urile citite înapoi dintr-un fișier păstrează valoarea transportată de subfluxul lor, astfel încât writer-ul BIFF nu lasă niciodată un câmp SXDB care numește o înregistrare pe care nu a emis-o; RawHasStorageStream marchează un cache încărcat din propriul său flux de stocare, al cărui descriptor global de registru precede înregistrările din cache

Integrarea clipboard-ului și opțiuni de lipire

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 XLSClipboardHasBiff8: Boolean;
      
Opțiunile de lipire sunt partajate de supraîncărcările PasteFromClipboard ale ambelor fațade: xlpoValuesOnly păstrează valorile din cache ale celulelor cu formule și sare peste formate și îmbinări, în timp ce xlpoInsertRows și xlpoInsertCols deplasează conținutul existent înainte ca blocul să ajungă în destinație
Asistenții încapsulează clipboard-ul Windows pentru interoperabilitatea foilor de calcul: asistenții de text folosesc CF_UNICODETEXT (cu fallback la CF_TEXT prin pagina de cod ANSI curentă), XLSSetClipboardTextAndHtml scrie textul și un payload HTML Format formatat într-o singură tranzacție, XLSBuildHtmlClipboard calculează offset-urile de octeți CF_HTML pentru un document sau un fragment, iar XLSEncodeClipboardField citează un câmp separat prin tab. XLSParseClipboardGrid parsează textul din clipboard ca rânduri separate prin tab, cu aceeași detectare de tipuri pe care TXLSCSVLoader o folosește pentru CSV, iar asistenții Biff8 detectează și citesc fluxul nativ pe care Excel însuși îl plasează pe clipboard, astfel încât datele lipite păstrează valorile, formulele și formatarea, fără pierderi de text

Rezolvarea textului de afișare al celulei

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;
      
Un rezolvator comun decide ce afișează o celulă pentru o stare dată de vizualizare: formule în locul valorilor, zerouri suprimate, text de formulă ascuns pe foile protejate și factorul de lățime dublat pe care Excel îl aplică afișării formulelor. Vizualizatorul registrului de lucru și randatoarele îl apelează prin punctele lor de intrare pentru opțiunile de afișare, iar aplicațiile pot apela direct XLSResolveCellDisplay cu propriile înregistrări de intrare; XLSDefaultCellDisplayOptions returnează valorile implicite canonice, iar XLSNormalizeFormulaDisplayText normalizează un șir de formulă pentru afișare

Obiecte de validare a datelor Classic XLS

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 }
      
Asistenții tipizați TXLSWorksheet.Add*Validation creează reguli TDVRange în TDVRangeList-ul foii; fiecare regulă poartă TXLSDataValidationType-ul său, limitele, mesajele de intrare și de eroare și TXLSDvErrorStyle. TDataValidator evaluează o editare față de reguli și raportează dacă valoarea este acceptabilă — aceeași verificare care stă și în spatele mesajelor de validare ale Excel

Scanarea și rezolvarea culorilor indexate

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);
      
Aceste înregistrări stau la baza metodelor la nivel de registru de lucru ResolveIndexedColor, NearestIndexedColor și ScanIndexedColorUsage: o rezolvare raportează din care dintre cele patru surse TXLSIndexedColorKind provine un token indexat, împreună cu slotul său de paletă, rolul de culoare de sistem și ARGB-ul normalizat, o potrivire nearest adaugă distanța RGB pătratică și flag-ul de potrivire exactă, iar scanarea de utilizare etichetează fiecare categorie de consumator care blochează un slot de paletă. Biblioteca păstrează un cache intern TXLSIndexedColorMatcher, cheiat după generația paletei — FindNearest răspunde interogărilor de culoare cea mai apropiată chiar din el, iar UpdateSlot corectează un singur slot de paletă — astfel încât rezolvările repetate rămân fără alocări

Asistenți pentru referințe 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;
      
Asistenți autonomi pentru aceeași notație A1 acceptată de API-urile registrului de lucru: formatează coordonate cu bază zero ca referință A1 de celulă și parsează înapoi referințe de celulă sau de interval, returnând False pentru intrări malformate în loc să ridice excepții

Consultați și