HotXLS-dokumentasjon

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 cellerWriteString, WriteRichString, WriteNumber, WriteBoolean, WriteDateTime og WriteError
FormelcellerWriteFormula, WriteFormulaNumber, WriteFormulaString, WriteFormulaBoolean, WriteFormulaDateTime og WriteFormulaError godtar bufrede resultater levert av den som kaller
Delte strengerUseSharedStrings aktiverer fjerning av dupliserte strenger på pakkenivå
StatistikkCellCount rapporterer antallet utsendte celler
RuterFreezePanes(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)

CellerOnCell (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
ArkinnrammingOnSheet (TXLSDirectSheetEvent) kan hoppe over et helt regneark før cellene tolkes; OnSkippedRecord (TXLSDirectSkippedEvent) rapporterer feilformet eller avkortet innhold med record-id og årsak
ArkoppsettOnDimension, OnSheetFormat, OnColumn, OnRow, OnMerge og OnPane leverer TXLSDirectDimension-, TXLSDirectSheetFormat-, TXLSDirectColumn-, TXLSDirectRow-, TXLSDirectMerge- og TXLSDirectPane-records; panetilstand bruker TXLSDirectPaneState (xdpsSplit, xdpsFrozen, xdpsFrozenSplit, xdpsUnknown)
MarkørtilstandTXLSRowCursor.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

Se også