Klasa TXLSForwardReader
TXLSForwardReader przedstawia jedną projektowaną powierzchnię sterowaną wywołaniami zwrotnymi dla klasycznego XLS, nowoczesnego XLSX, ODS, CSV i TSV, bez budowania kompletnego modelu obiektowego skoroszytu; adaptuje te same backendowe kursory wierszy, z których korzysta TXLSRowCursor przedstawia jedną projektowaną, sterowaną wywołaniami zwrotnymi powierzchnię dla klasycznego XLS, nowoczesnego XLSX, CSV i TSV bez budowania kompletnego modelu obiektów skoroszytu
Format wejściowy
TXLSForwardFormat wybiera automatyczne wykrywanie lub wymusza parsowanie XLS, XLSX, CSV lub TSV
ReadFile otwiera nazwane źródło, a ReadStream czyta z bieżącej pozycji strumienia wywołującego, przywracając tę pozycję po powrocie
Projekcja i granice wierszy
IncludeColumn dodaje kolumnę o indeksie zerowym do zbioru projekcji o stałym czasie, ClearColumnProjection przywraca wyjście wszystkich kolumn, a HasColumnProjection raportuje, czy wypychanie jest aktywne
FirstRow i LastRow stosują jednobazowe granice wierszy przed wysyłką wywołań zwrotnych, pozwalając parserom zatrzymać się po żądanym przedziale
Wywołania zwrotne i konwersja wartości
| OnSheet | Odbiera nazwę każdego arkusza i może pominąć arkusz lub przerwać cały odczyt |
| OnCell | Odbiera wiersz, kolumnę, indeks stylu, znormalizowany typ, surową wartość i tekst formuły dla każdej projektowanej komórki |
| IncludeFormulaText | Używa formatów liczb skoroszytu do identyfikacji wartości dat i czasu |
| DetectDates | Konwertuje pola CSV i TSV na obsługiwane typy skalarne tam, gdzie jest to jednoznaczne |
| DetectTextTypes | Zachowuje sformatowane przebiegi i ładunek fonetyczny tam, gdzie format źródłowy je obsługuje |
| PreserveRichText | Zastępuje separator pól tekstowych, gdy wykrywanie formatu nie jest odpowiednie |
| ValueSeparator | Zastępuje separator pól tekstowych, gdy wykrywanie formatu nie jest odpowiednie |
HasFormula is false for ordinary values, while FormulaTextAvailable is true only when Formula zawiera wiarygodny tekst; klasyczny XLS raportuje zcache'owane wyniki formuł bez dostępnego tekstu formuły, ponieważ ścieżka strumieniowa nie dekompiluje tokenów BIFF
Stan zakończenia
CellCount reports dispatched cells and Aborted odróżnia anulowanie przez wywołującego od normalnego zakończenia
ClassicBytesRead raportuje łączną liczbę bajtów skonsumowanych przez parser klasycznego XLS (BIFF), a ClassicPeakBufferedBytes szczytową liczbę bajtów trzymanych w buforze jednocześnie; obie to diagnostyki tylko do odczytu dla ścieżki klasycznego XLS
PeakRowBufferedBytes raportuje największy szacowany zestaw roboczy wierszy logicznych utrzymywany przez współdzielony backend, a SheetPassesStarted zlicza przejścia arkuszy, które się uaktywniły; arkusz odrzucony przez OnSheet nie otwiera swojej części arkusza ani nie zwiększa licznika
Sheet indexes delivered through OnSheet raportuje wysłane komórki, a OnCell odróżnia anulowanie przez wywołującego od normalnego zakończenia
Przykład
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;Wybór interfejsu API strumieniowania
Użyj TXLSForwardReader , gdy jedna ścieżka aplikacji musi obsługiwać kilka formatów, TXLSDirectReader dla zdarzeń arkusza specyficznych dla XLSX, bogatego tekstu i równoległych, lub TXLSRowCursor do iteracji wierszy XLSX sterowanej wyciąganiem