Classe TXLSForwardReader
TXLSForwardReader presenta un'unica superficie proiettata e basata su callback per l'input XLS classico, XLSX moderno, ODS, CSV e TSV senza costruire un modello completo di oggetti della cartella di lavoro; si adatta agli stessi backend di cursore di riga usati da TXLSRowCursor presenta una superficie proiettata e basata su callback per l'input XLS classico, XLSX moderno, CSV e TSV senza costruire un modello completo di oggetti della cartella di lavoro
Formato di input
TXLSForwardFormat seleziona il rilevamento automatico o forza l'analisi XLS, XLSX, CSV o TSV
ReadFile apre una sorgente denominata e ReadStream legge dalla posizione corrente del flusso del chiamante ripristinando quella posizione al ritorno
Proiezione e limiti delle righe
IncludeColumn aggiunge una colonna a base zero al set di proiezione a tempo costante, ClearColumnProjection ripristina l'output di tutte le colonne e HasColumnProjection segnala se il pushdown è attivo
FirstRow e LastRow applicano limiti di riga a base uno prima dell'invio dei callback, consentendo ai parser di fermarsi dopo l'intervallo richiesto
Callback e conversione dei valori
| OnSheet | Riceve il nome di ogni foglio di lavoro e può saltare un foglio o interrompere completamente la lettura |
| OnCell | Riceve riga, colonna, indice di stile, tipo normalizzato, valore grezzo e testo della formula per ogni cella proiettata |
| IncludeFormulaText | Usa i formati numerici della cartella di lavoro per identificare valori di data e ora |
| DetectDates | Converte i campi CSV e TSV nei tipi scalari supportati quando non ambigui |
| DetectTextTypes | Conserva i run formattati e il payload fonetico dove il formato sorgente li supporta |
| PreserveRichText | Sostituisce il separatore dei campi di testo quando il rilevamento del formato non è appropriato |
| ValueSeparator | Sostituisce il separatore dei campi di testo quando il rilevamento del formato non è appropriato |
HasFormula is false for ordinary values, while FormulaTextAvailable is true only when Formula contiene testo affidabile; l'XLS classico riporta i risultati delle formule in cache senza il testo della formula disponibile, perché il percorso forward non decompila i token BIFF
Stato di completamento
CellCount reports dispatched cells and Aborted distingue l'annullamento del chiamante dal completamento normale
ClassicBytesRead riporta il totale dei byte consumati dal parser XLS classico (BIFF) e ClassicPeakBufferedBytes il picco di byte bufferizzati trattenuti contemporaneamente; entrambi sono diagnostici di sola lettura per il percorso XLS classico
PeakRowBufferedBytes riporta il più ampio working set stimato di righe logiche trattenuto dal backend condiviso, e SheetPassesStarted conta i passaggi sui fogli di lavoro diventati attivi; un foglio rifiutato da OnSheet non apre la sua parte di foglio di lavoro né incrementa il contatore
Sheet indexes delivered through OnSheet riporta le celle inviate e OnCell distingue l'annullamento del chiamante dal completamento normale
Esempio
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;Scelta di un'API di streaming
Usare TXLSForwardReader quando un percorso applicativo deve accettare più formati, TXLSDirectReader per il layout specifico XLSX, rich text ed eventi di foglio paralleli, oppure TXLSRowCursor per l'iterazione pull delle righe XLSX