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ă
TXLSAutofilter | Add, 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 |
TXLSAutofilterItem | Shape 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 |
TXLSDataBarSpec | AxisColor, 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ă |
TXLSIconSetSpec | ThresholdEqualsInclude selectează comparație inclusivă sau exclusivă pentru fiecare prag de pictogramă |
TXLSCfValue | IsIndexedColor ș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
TXLSDataTable | Assign, 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ă |
TXLSDataTables | Add, 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 |
TXLSPivotCacheField | GroupBaseField ș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
TXLSDiagnostic | Code, NativeCode, Message, Severity, ExceptionClass, PartName, RecordId, SheetIndex, SheetName și StreamOffset identifică un diagnostic de parser, writer sau pachet |
TXLSDiagnostics | Add adaugă un diagnostic, Clear resetează colecția, iar Count plus Items enumeră intrările sale |
TXLSDiagnosticSeverity și TXLSDiagnosticOperation | TXLSDiagnosticSeverity (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 |
TXLSFormulaDebugSession | CurrentStep, DependencyCount, NodeCount și StepCount expun instantaneul curent al debuggerului și dimensiunile urmei sale |
TXLSFormulaTracer | StepCount raportează numărul pașilor de evaluare înregistrați |
TXLSImportCheck | AddRule, 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 |
Politici de salvare a legăturilor externe
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
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
TXLSHTMLImport | Supraî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 |
TXLSCodeGen | Language (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) |
TXLSXWorkbookCompare | LeftName și RightName etichetează intrările, Compare efectuează comparația, iar Diff expune intrările TlxCompareDiff rezultate, clasificate prin TlxCompareKind |
TXLSFileMonitor | IntervalMs 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 TXLSCSVSaver | Loader-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ă
TXLSXOpaquePackage | LoadWorkbookXmlMetadata 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 |
TXLSFileStorage | Load, 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 |
TXLSBlob | Add 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 |
TXLSBlobList | Append, AppendList, CopyData și Write combină sau emit intrări; Entries și TotalSize expun starea listei |
TXLSWideStringBuilder | AddString adaugă text, iar Length raportează numărul acumulat de caractere |
Adăugiri pentru desenare și vizualizatorul de registre de lucru
TXLSFillFormat | PictureFill 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 |
TXLSShapes | AddScrollBar ș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 |
TXLSWorkbookViewer | CanUndo ș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
TXLSGraphicsBackend | DrawTiledImage pictează repetat un fundal de foaie pe regiunea de pagină decupată |
TXLSPaginationModel | CompactRangeMode, 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ă |
TXLSCellImageExporter | Measure 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 |
TXLSPageImageExporter | BeforePaint, 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 |
TXLSPrintDocument | PrintWorksheet, 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
TXLSChartSeries | AddTrendline și AddErrorBars creează adnotări tipizate de serie, în timp ce TrendlineCount și ErrorBarCount raportează dimensiunile colecțiilor lor |
TXLSChartAxis | HasAxcExtFlag testează un flag brut AXCEXT fără a obliga apelanții să decodeze masca de biți |
TXLSChartModel | AxisGroupCount raportează numărul de grupuri de axe primare și secundare decodate din diagramă |
TXLSCustomChart | AddAreaData 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 |
TXLSWorksheet | AddChartObject ancorează un cadru de diagramă pe foaia de lucru și îl conectează la builder-ul partajat de diagrame |
TXLSXChartLayoutResolver | TryResolve 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
IXLSPDFAttachmentSource | WriteTo transmite în flux octeții atașamentului către exportul PDF, fără ca exporterul să dețină datele sursă |
TXLSPDFExport | AttachmentDuplicatePolicy selectează tratarea numelor duplicate, AttachmentSpoolThreshold controlează spooling-ul atașamentelor, iar DocumentLanguage scrie metadatele limbii documentului |
TXLSPDFSignature | TextAlign, TextSize, TextColor, TextBold și TextItalic configurează aspectul vizibil al semnăturii |
TXLSHTMLExport | ViewMode (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 |
TXLSXHtmlExportOptions | ViewMode, HotTrackTargets și HotTrackColor furnizează comenzile echivalente pentru exportul HTML XLSX |
Audit de calcul și controale ale registrului de lucru
TXLSCalculationAuditReport | Truncated raportează o trunchiere la limita de probleme, StackTruncated raportează trunchierea cadrelor call stack-ului, iar Issues indexează problemele de calcul înregistrate |
TXLSUserFunctionRegistry | Generation se schimbă ori de câte ori se schimbă setul de funcții utilizator înregistrate, permițând invalidarea legărilor de formule din cache |
EXLSReportRecoverableData | Category identifică categoria de date de raport recuperabile prezentată apelantului |
IXLSWorkBook | ManualCalculationThreadCount limitează numărul de workeri folosiți de calculul manual |
TXLSXDataValidation | HasUnknownImeMode raportează o valoare de mod IME pe care HotXLS a păstrat-o, dar nu o recunoaște |
TXLSXTable | ColumnCalculatedFormulaArrayRaw și ColumnTotalsFormulaArrayRaw expun textul original al formulelor matrice pentru coloanele tabelului |
Compatibilitate cu framing-ul PivotCache de tip vechi
TXLSPivotCache | RawBucketIndex 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ă |
TXLSPivotCache | StreamId 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 |
TXLSWorkbook | UpgradeLegacyPivotCacheFraming 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