Direkte leser- og skriver-API
TXLSDirectReader og TXLSDirectWriter behandler XLSX-pakker uten å holde et komplett regnearkrutenett i minnet, så API-kall som beskriver et ark må gjøres før eller under den tilsvarende strømmefasen
Skriverens livssyklus og celleverdier
TXLSDirectWriter.BeginFile eller BeginStream starter en pakke, arksmetoder definerer ett regneark om gangen, og Finish forplikter den endelige pakken
| Skalære celler | WriteString, WriteRichString, WriteNumber, WriteBoolean, WriteDateTime og WriteError |
| Formelceller | WriteFormula, WriteFormulaNumber, WriteFormulaString, WriteFormulaBoolean, WriteFormulaDateTime og WriteFormulaError godtar bufrede resultater levert av den som kaller |
| Delte strenger | UseSharedStrings aktiverer fjerning av dupliserte strenger på pakkenivå |
| Statistikk | CellCount rapporterer antallet utsendte celler |
| Ruter | FreezePanes(ColSplit, RowSplit) skriver en frossen deling ved den angitte én-baserte kolonnen og raden |
Rader og kolonner er én-baserte i den offentlige skriverflaten og må leveres i fremoverrettet regnearkrekkefølge
Gjenbrukbare stiler
AddCellStyle registrerer en uforanderlig stilbehandler på pakkenivå, og CloneCellStyle utleder en ny behandler uten å beholde regnearkrader
Definerte navn og hyperkoblinger
AddDefinedName, AddLocalDefinedName, AddDefinedRange og AddLocalDefinedRange legger til arbeidsbok- eller arklokale navn før pakken fullføres
AddHyperlink, AddHyperlinkRange, AddInternalHyperlink og AddInternalHyperlinkRange sender ut eksterne relasjoner eller interne arklokasjoner for én celle eller et område
Datavalidering
AddDataValidation og AddDataValidationSqRef eksponerer hele regeloverflaten, mens AddListValidation, AddWholeNumberValidation, AddDecimalValidation, AddDateValidation, AddTimeValidation, AddTextLengthValidation og AddCustomValidation gir typede hjelpere
Betinget formatering
AddConditionalFormat, AddConditionalFormatExpression, AddConditionalFormatContainsText, AddConditionalFormatNotContainsText, AddConditionalFormatBeginsWith, AddConditionalFormatEndsWith, AddConditionalFormatTop10, AddConditionalFormatAboveAverage, AddConditionalFormatDuplicateValues, AddConditionalFormatUniqueValues, AddConditionalFormatContainsBlanks, AddConditionalFormatNotContainsBlanks, AddConditionalFormatContainsErrors og AddConditionalFormatNotContainsErrors legger til skalarregler
AddConditionalFormatDataBar, AddConditionalFormatColorScale2, AddConditionalFormatColorScale3 og AddConditionalFormatIconSet legger til visuelle regler; ClearConditionalFormats fjerner ventende regler for det aktuelle arket
Autofilter og tabeller
AddAutoFilterValue, AddAutoFilterDateGroup og AddAutoFilterSortCondition konfigurerer regnearkfilteret
AddTable oppretter en tabelldel, og AddTableFilterValue, AddTableFilterDateGroup og AddTableSortCondition konfigurerer dens filter- og sorteringstilstand
Beskyttelse og sideskift
ProtectSheet, UnprotectSheet, AddProtectedRange og ClearProtectedRanges konfigurerer regnearkbeskyttelse; ProtectWorkbook og UnprotectWorkbook konfigurerer arbeidsbokstruktur og vinduslåser
AddHorizontalPageBreak og AddVerticalPageBreak sender ut manuelle sideskift for det aktuelle regnearket
Diagnostikk for direkte leserlager
TXLSDirectReader.SharedStringMemoryLimit begrenser dekodet minne for delte strenger, SharedStringsOnDisk rapporterer migrering til midlertidig indeksert lagring, SharedStringCount rapporterer antallet innlastede oppføringer, og ParallelDiag eksponerer begrenset parallelltolker-diagnostikk
Leserprojeksjon og formeltilstand
FirstRow, LastRow, IncludeColumn og ClearColumnProjection skyver rad- og én-basert kolonnevalg inn i regnearktolkeren før verdi-, formel- eller riktekstallokering
IncludeFormulaText har standardverdien true; deaktiveres den, beholdes bufrede verdier, koordinater, stiler og HasFormula, mens FormulaTextAvailable blir false og Formula forblir tom
Radmarkør
TXLSRowCursor.Open godtar XLS-, XLSX-, XLSM-, ODS-, CSV- og TSV-filer eller -strømmer; automatisk ZIP-gjenkjenning skiller ODS-pakker fra Open XML-arbeidsbøker før et ark åpnes
SelectSheet og SelectSheetByName velger regneark; SheetCount, SheetNames, SheetIndex, RowIndex og Eof eksponerer traverseringstilstanden, mens SharedStringMemoryLimit bruker samme begrensede policy for delte strenger som readeren
FirstRow, LastRow, IncludeColumn og ClearColumnProjection bruker de samme én-baserte filtrene på tvers av alle markørformater; pass-alternativer kan ikke endres mellom FindFirst og EOF, men blir mutbare igjen etter EOF, arkvalg eller lukking
Hver TXLSRowCursorCell rapporterer HasFormula uavhengig av FormulaTextAvailable; klassisk XLS eksponerer formulertilstedeværelse og bufrede resultater uten å hevde tilgang til utilgjengelig tokentekst, mens IncludeFormulaText kan undertrykke XLSX- og ODS-formeltekst før akkumulering
ODS-traversering holder én fysisk radmal, klipper gjentatte radblokker til ønsket intervall, hopper direkte mellom valgte kolonner inne i gjentatte spenn, går videre over dekkede celler uten å returnere dem som verdier, og rapporterer ugyldige eller rutenettbegrensede gjentakelsestall gjennom OnSkippedRecord
State skiller mellom xrcsClosed, xrcsBeforeFirst, xrcsActive, xrcsEof, xrcsCancelled og xrcsFaulted; Cancel er idempotent, ugyldiggjør gjeldende rad og frigjør den aktive regnearkstrømmen mens kilden beholdes, slik at et eksplisitt arkvalg kan starte et nytt gjennomløp
Strømoverbelastningen bruker som standard xsoBorrowed, gjenoppretter den som kaller sin opprinnelige posisjon ved lukking, og godtar xsoOwned for å overføre eierskap etter en vellykket åpning; mislykkede åpninger forbruker aldri kallerens eierskap
CurrentRowView låner gjeldende radmatrise uten å kopiere den og sjekker en generasjon ved hver tilgang; å flytte markøren fremover, velge ark, avbryte, lukke eller destruere markøren ugyldiggjør visningen og utløser EXLSRowCursorViewInvalidated ved senere tilgang
PeakRowBufferedBytes er et monotont estimat siden siste Open av cellerecordene, administrerte nyttelaster, rik tekst og formatbackend-data som beholdes for én logisk rad; det er ment for regresjonsdiagnostikk av minneforbruk med avgrensede buffere, ikke for nøyaktig heap-regnskap
SheetPassesStarted teller vellykkede starter av regnearkbackender; å inspisere arknavn eller hoppe over et ark gjennom callback-fasaden åpner ikke regnearkdelen
Fremoverrettet callback-adapter
TXLSForwardReader delegerer dekoding av XLS, XLSX, ODS, CSV og TSV til TXLSRowCursor, konverterer hver celle i gjeldende rad til en OnCell-callback, og bevarer de samme kontraktene for radgrenser, kolonneprojeksjon, formeltilstand, rik tekst, passord, hoppede records, strømposisjon og begrensede buffere
PeakRowBufferedBytes og SheetPassesStarted eksponerer den delte markørdiagnostikken på callback-flaten, mens klassisk XLS i tillegg beholder ClassicBytesRead og ClassicPeakBufferedBytes
Leserhendelser og record-typer
Leseren og radmarkøren eksponerer valgfrie callbacks og enkle records, alle deklarert i lxDirectRead. Hver callback følger samme form: recorden beskriver ett strømmet element, og å sette Abort stopper skanningen (arkhendelser godtar i tillegg SkipSheet)
| Celler | OnCell (type TXLSDirectCellEvent) leverer en TXLSDirectCell per celle hvis Kind (TXLSDirectCellKind: xdkEmpty, xdkNumber, xdkString, xdkBoolean, xdkDate, xdkError) velger det utfylte verdifeltet; rik tekst transporteres som en TXLSDirectRichText som holder TXLSDirectRichTextRun-oppføringer, hver med en TXLSDirectRichColor (kind TXLSDirectRichColorKind), TXLSDirectRichUnderline og TXLSDirectRichVertAlign, pluss valgfrie TXLSDirectPhoneticProperties- og TXLSDirectPhoneticRun-data |
| Arkinnramming | OnSheet (TXLSDirectSheetEvent) kan hoppe over et helt regneark før cellene tolkes; OnSkippedRecord (TXLSDirectSkippedEvent) rapporterer feilformet eller avkortet innhold med record-id og årsak |
| Arkoppsett | OnDimension, OnSheetFormat, OnColumn, OnRow, OnMerge og OnPane leverer TXLSDirectDimension-, TXLSDirectSheetFormat-, TXLSDirectColumn-, TXLSDirectRow-, TXLSDirectMerge- og TXLSDirectPane-records; panetilstand bruker TXLSDirectPaneState (xdpsSplit, xdpsFrozen, xdpsFrozenSplit, xdpsUnknown) |
| Markørtilstand | TXLSRowCursor.State er en TXLSRowCursorState (xrcsClosed, xrcsBeforeFirst, xrcsActive, xrcsEof, xrcsCancelled, xrcsFaulted); strømoverbelastningen til Open tar en TXLSStreamOwnership (xsoBorrowed som standard, xsoOwned for å overføre eierskap), og CurrentRowView returnerer en utlånt IXLSRowCursorView-visning hvis Valid-egenskap vokter tilgangen og hvis ValueByCol leser én celle av den utlånte raden uten å kopiere; visningen ugyldiggjøres når markøren går fremover |
Skriverens parameter- og stiltyper
Skriverens typede hjelpere (lxDirectWrite) godtar records og enums slik at kallene forblir allokeringsfrie: WriteRichString tar en TXLSDirectRichText; AddCellStyle bygger en stil på pakkenivå fra en TXLSDirectCellStyle hvis justering (TXLSDirectHorizontalAlignment, TXLSDirectVerticalAlignment), understreking (TXLSDirectUnderline), fyllmønster (TXLSDirectFillPattern) og kantsider (TXLSDirectStyleBorder med TXLSDirectBorderSide) speiler OOXML-stilmodellen. Betinget formatering sender en TXLSDirectConditionalFormat med TXLSDirectCfKind / TXLSDirectCfOperator / TXLSDirectCfValue / TXLSDirectCfValueKind og TXLSDirectIconSetType, datavalidering en TXLSDirectDataValidation, tabeller en TXLSDirectTable, hyperkoblinger en TXLSDirectHyperlink, definerte navn en TXLSDirectDefinedName, differensialstiler en TXLSDirectDxfStyle, kommentarer en TXLSDirectComment, bilder en TXLSDirectImage med TXLSDirectImageFormat, diagrammer en TXLSDirectChart med TXLSDirectChartSeries og TXLSDirectChartType, sammenslåinger en TXLSDirectMergeRange, beskyttede områder en TXLSDirectProtectedRange, arkbeskyttelse et TXLSDirectSheetProtectionOptions-sett av TXLSDirectSheetProtectionOption, sorteringstilstand for autofilter en TXLSDirectSortState, kolonnealternativer en TXLSDirectColumnOption, og sidegeometri en TXLSDirectPageMargins-record
TXLSDirectNeedRow = procedure(Sender: TObject; RowIndex: Integer;
var Eof: Boolean) of object;
function XLSDirectColName(Col: Integer): WideString;
function XLSDirectParseRef(const Ref: WideString;
out Col, Row: Integer): Boolean;
function XLSDirectPasswordHash(const Password: WideString): WideString;
OnNeedRow henter rader fra applikasjonen: leverandøren skriver radens celler rett gjennom skriveren og lar Eof = False stå, eller erklærer uttømming med Eof = True for å stoppe løkken. Hjelperne konverterer mellom koordinater og beskyttelsesprimitiver: XLSDirectColName gjengir en nullbasert kolonne som sine A1-bokstaver, XLSDirectParseRef tolker en A1-cellereferanse, og XLSDirectPasswordHash beregner den eldre passordhashen som arkbeskyttelsesrecordene lagrer