Klasse TXLSForwardReader
TXLSForwardReader bietet eine einzige projizierte, callbackgesteuerte Oberfläche für klassisches XLS, modernes XLSX, ODS, CSV und TSV, ohne ein vollständiges Arbeitsmappen-Objektmodell aufzubauen; dabei adaptiert er dieselben Zeilencursor-Backends wie TXLSRowCursor, sodass Push- und Pull-Lesezugriffe Format-, Projektions- und Formelsemantik teilen
Eingabeformat
TXLSForwardFormat wählt die automatische Erkennung oder erzwingt das Parsen von XLS, XLSX, ODS, CSV oder TSV
ReadFile öffnet eine benannte Quelle, und ReadStream liest ab der aktuellen Streamposition des Aufrufers und stellt diese Position bei der Rückkehr wieder her
Projektion und Zeilengrenzen
IncludeColumn fügt der Projektionsmenge mit konstanter Zeit eine einsbasierte Spalte hinzu, ClearColumnProjection stellt die Ausgabe aller Spalten wieder her, und HasColumnProjection meldet, ob Pushdown aktiv ist
FirstRow und LastRow wenden vor der Callback-Verteilung 1-basierte Zeilengrenzen an, sodass Parser nach dem angeforderten Intervall anhalten können
Callbacks und Wertkonvertierung
| OnSheet | Empfängt jeden Arbeitsblattnamen und kann ein Blatt überspringen oder den vollständigen Lesevorgang abbrechen |
| OnCell | Empfängt Zeile, Spalte, Stilindex, normalisierten Zwischenwert, Formelpräsenz und Formeltext-Verfügbarkeit für jede projizierte Zelle |
| IncludeFormulaText | Behält Formelpräsenz und zwischengespeicherte Werte bei und unterdrückt optional die Akkumulation von Formeltext |
| DetectDates | Verwendet Arbeitsmappen-Zahlenformate, um Datums- und Zeitwerte zu erkennen |
| DetectTextTypes | Konvertiert CSV- und TSV-Felder, wo eindeutig, in unterstützte skalare Typen |
| PreserveRichText | Behält formatierte Läufe und phonetische Daten bei, wo das Quellformat diese unterstützt |
| ValueSeparator | Überschreibt das Trennzeichen für Textfelder, wenn die Formaterkennung nicht geeignet ist |
HasFormula ist bei gewöhnlichen Werten false, während FormulaTextAvailable nur dann true ist, wenn Formula verlässlichen Text enthält; klassisches XLS meldet zwischengespeicherte Formelergebnisse mit nicht verfügbarem Formeltext, da der Forward-Pfad BIFF-Token nicht dekompiliert
Abschlusszustand
CellCount meldet verteilte Zellen, und Aborted unterscheidet den Abbruch durch den Aufrufer vom normalen Abschluss
ClassicBytesRead meldet die vom klassischen XLS-BIFF-Parser konsumierten Gesamtbytes und ClassicPeakBufferedBytes die gleichzeitig vorgehaltenen Spitzen gepufferter Bytes; beide sind schreibgeschützte Diagnosen für den klassischen XLS-Pfad
PeakRowBufferedBytes meldet den größte geschätzte logische Zeilen-Arbeitssatz, den das gemeinsame Backend vorhält, und SheetPassesStarted zählt die Aktiv gewordenen Arbeitsblattdurchläufe; ein von OnSheet abgelehntes Blatt öffnet seinen Arbeitsblatt-Part nicht und erhöht den Zähler nicht
Über OnSheet und OnCell gelieferte Blattindizes sind für jedes unterstützte Format durchgängig einsbasiert
Beispiel
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;
Auswahl einer Streaming-API
Verwenden Sie TXLSForwardReader, wenn ein Anwendungspfad mehrere Formate akzeptieren muss, TXLSDirectReader für XLSX-spezifisches Layout und parallele Arbeitsblatt-Ereignisse oder TXLSRowCursor, wenn dieselben gemeinsamen Dekodierungssemantiken über pullgesteuerte Zeileniteration benötigt werden