Klasse TXLSForwardReader
TXLSForwardReader presenteert één geprojecteerd, callbackgestuurd oppervlak voor klassieke XLS-, moderne XLSX-, ODS-, CSV- en TSV-invoer, zonder een compleet werkmapobjectmodel op te bouwen; de reader gebruikt dezelfde rij-cursorbackends als TXLSRowCursor , zodat push- en pull-reads dezelfde semantiek voor indeling, projectie en formules delen
Invoerformaat
TXLSForwardFormat selecteert automatische detectie of dwingt XLS-, XLSX-, CSV- of TSV-parsing af
ReadFile opent een benoemde bron en ReadStream leest vanaf de huidige stroompositie van de aanroeper, terwijl die positie bij terugkeer wordt hersteld
Projectie en rijgrenzen
IncludeColumn voegt een op 0 gebaseerde kolom toe aan de projectieset in constante tijd, ClearColumnProjection herstelt uitvoer van alle kolommen, en HasColumnProjection rapporteert of pushdown actief is
FirstRow en LastRow passen op 1 gebaseerde rijgrenzen toe vóór de callbackverzending, waardoor parsers na het gevraagde interval kunnen stoppen
Callbacks en waardeconversie
| OnSheet | Ontvangt elke werkbladnaam en kan een blad overslaan of de volledige leesbewerking afbreken |
| OnCell | Ontvangt de rij, kolom, stijlindex, genormaliseerde type, ruwe waarde en formuletekst voor elke geprojecteerde cel |
| IncludeFormulaText | Gebruikt werkmapgetalnotaties om datum- en tijdwaarden te identificeren |
| DetectDates | Converteert CSV- en TSV-velden naar ondersteunde scalaire typen waar ondubbelzinnig |
| DetectTextTypes | Behoudt opgemaakte runs en fonetische lading waar het bronformaat deze ondersteunt |
| PreserveRichText | Overschrijft de tekstveldscheidingsteken wanneer formaatdetectie niet geschikt is |
| ValueSeparator | Houdt formuleaanwezigheid en gecachte waarden bij en onderdrukt optioneel de accumulatie van formuletekst |
HasFormula is false voor gewone waarden, terwijl FormulaTextAvailable alleen true is wanneer Formula betrouwbare tekst bevat; klassieke XLS rapporteert gecachte formuleresultaten met onbeschikbare formuletekst, omdat het forward-pad BIFF-tokens niet decompileert
Voltooiingsstatus
CellCount rapporteert verzonden cellen en Aborted onderscheidt annulering door de aanroeper van normale voltooiing
ClassicBytesRead rapporteert het totale aantal bytes dat de klassieke XLS-parser (BIFF) heeft verbruikt, en ClassicPeakBufferedBytes het piekaantal tegelijk gebufferde bytes; beide zijn read-only diagnostische waarden voor het klassieke XLS-pad
PeakRowBufferedBytes rapporteert de grootste geschatte werkset per logische rij die de gedeelde backend vasthield, en SheetPassesStarted telt de werkbladpassen die actief zijn geworden; een sheet die door OnSheet wordt geweigerd, opent zijn worksheet-part niet en verhoogt de teller niet
Sheet-indexen die via OnSheet en OnCell worden doorgegeven, zijn voor elke ondersteunde indeling consistent op 1 gebaseerd
Voorbeeld
Reader := TXLSForwardReader.Create;
try
Reader.FirstRow := 2;
Reader.IncludeColumn(1);
Reader.IncludeColumn(5);
Reader.OnSheet := ReadSheet;
Reader.OnCell := ReadCell;
Reader.ReadFile('large-input.xlsx', xffAuto);
finally
Reader.Free;
end;Een streaming-API kiezen
Gebruik TXLSForwardReader wanneer één toepassingspad verschillende formaten moet accepteren, TXLSDirectReader voor XLSX-specifieke lay-out, rich-text en parallelle werkbladevents, of TXLSRowCursor voor pullgestuurde XLSX-rijiteratie