TXLSForwardReader osztály
TXLSForwardReader egyetlen levetített, visszahívás-vezérelt felületet kínál a klasszikus XLS, a modern XLSX, az ODS, a CSV és a TSV bemenetekhez anélkül, hogy teljes munkafüzet-objektummodellt építene fel; ugyanazokat a sorkurzor-háttérrendszereket használja, mint a TXLSRowCursor, így a push és a pull jellegű olvasás közös formátum-, leképezési és képlet-szemantikát használ
Bemeneti formátum
TXLSForwardFormat automatikus felismerést választ, vagy kényszeríti az XLS, XLSX, CSV vagy TSV elemzést
ReadFile megnyit egy nevesített forrást, a ReadStream pedig a hívó aktuális adatfolyam-pozíciójából olvas, és visszatéréskor visszaállítja azt a pozíciót
Levetítés és sorkorlátok
IncludeColumn egy nullától kezdődő oszlopot ad a konstans idejű levetítési halmazhoz, a ClearColumnProjection visszaállítja az összes oszlopos kimenetet, a HasColumnProjection pedig jelenti, hogy aktív-e a leengedés (pushdown)
FirstRow és LastRow egytől kezdődő sorkorlátokat alkalmaz a visszahívás-kiosztás előtt, lehetővé téve az elemzőknek, hogy a kért intervallum után megálljanak
Visszahívások és értékátalakítás
| OnSheet | Minden munkalapnevet megkap, és kihagyhat egy lapot, vagy megszakíthatja a teljes olvasást |
| OnCell | Minden levetített cellához megkapja a sort, az oszlopot, a stílusindexet, a normalizált típust, a nyers értéket és a képletszöveget |
| IncludeFormulaText | Megtartja a képlet jelenlétét és a gyorsítótárazott értékeket, miközben opcionálisan elnyomja a képletszöveg-felhalmozást |
| DetectDates | A munkafüzet számformátumait használja a dátum- és időértékek azonosítására |
| DetectTextTypes | A CSV és TSV mezőket támogatott skaláris típusokká alakítja ott, ahol egyértelmű |
| PreserveRichText | Megtartja a formázott részeket és a fonetikai adatokat ott, ahol a forrásformátum támogatja azokat |
| ValueSeparator | Felülbírálja a szövegmező-elválasztót, ha a formátumfelismerés nem megfelelő |
A HasFormula közönséges értékeknél false, a FormulaTextAvailable pedig csak akkor true, ha a Formula megbízható szöveget tartalmaz; a klasszikus XLS gyorsítótárazott kéleteredményeket jelent elérhetetlen képletszöveggel, mert az előre olvasó útvonal nem dekompilálja a BIFF tokeneket
Befejezési állapot
CellCount a kiosztott cellák számát jelenti, az Aborted pedig megkülönbözteti a hívó általi megszakítást a normál befejezéstől
A ClassicBytesRead a klasszikus XLS (BIFF) elemző által felhasznált bájtok összesítését, a ClassicPeakBufferedBytes pedig az egyszerre tartott csúcspufferelt bájtszámot jelenti; mindkettő írásvédett diagnosztika a klasszikus XLS útvonalhoz
A PeakRowBufferedBytes a megosztott háttérrendszer által megtartott legnagyobb becsült logikai sori munkahalmazt jelenti, a SheetPassesStarted pedig az aktívvá vált munkalapátmeneteket számolja; az OnSheet által elutasított munkalap nem nyitja meg a munkalaprészét, és nem növeli a számlálót
Az OnSheet és az OnCell révén kézbesített munkalapindexek minden támogatott formátumban következetesen egytől kezdődnek
Példa
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;
Streamelő API kiválasztása
Használja a TXLSForwardReader osztályt, ha egyetlen alkalmazásútvonalnak több formátumot kell elfogadnia, a TXLSDirectReader osztályt az XLSX-specifikus elrendezéshez, a rich-text-hez és a párhuzamos munkalapeseményekhez, vagy a TXLSRowCursor osztályt a pull-vezérelt XLSX soriterációhoz