Μέθοδος CreateLoadedCellCursor
Δημιουργεί έναν cursor έλξης πάνω από τα αποθηκευμένα κελιά ενός φορτωμένου βιβλίου εργασίας XLSX, με επιλογή συμπερίληψης κενών με ανεξάρτητη μορφοποίηση
Σύνταξη
function CreateLoadedCellCursor: IXLSLoadedCellCursor; overload; function CreateLoadedCellCursor( AIncludeStoredBlanks: Boolean): IXLSLoadedCellCursor; overload;
Σειρά διάσχισης και κόστος
Ο cursor επισκέπτεται τα φύλλα εργασίας με τη σειρά της συλλογής και στη συνέχεια τα κελιά με αύξουσα σειρά και στήλης
Τα SheetIndex, Row και Col είναι δημόσιες συντεταγμένες με αρίθμηση από τη μονάδα
Τα υλοποιημένα φύλλα εργασίας διαβάζονται απευθείας από τα δεσμευμένα αραιά μπλοκ των 256 σειρών τους χωρίς να χτίζεται ταξινομημένη λίστα κελιών
Τα συσκευασμένα φύλλα εργασίας διαβάζονται απευθείας μέσω του iterator της συσκευασμένης αποθήκευσης και παραμένουν συσκευασμένα μετά τη διάσχιση
Η κατάσταση του cursor είναι σταθερή ως προς το μέγεθος του βιβλίου εργασίας και δεν δεσμεύει πίνακες διαστάσεων σύμφωνα με τα όρια σειρών ή στηλών XLSX
Η υπερφόρτωση χωρίς παραμέτρους παραλείπει τα κενά μόνο με στυλ, τα αποθηκευμένα placeholders Empty και τα αποθηκευμένα placeholders Null
Περάστε True για να συμπεριλάβετε κενές συντεταγμένες με ανεξάρτητη μορφοποίηση από υλοποιημένη ή συσκευασμένη αποθήκευση, χωρίς υλοποίηση συσκευασμένων κελιών
Τα χωρίς στυλ placeholders Empty και Null παραμένουν εξαιρεμένα και στις δύο λειτουργίες
Πεδία στιγμιότυπου
| Πεδίο | Σημασία |
|---|---|
SheetIndex / SheetName | Η ταυτότητα του φύλλου εργασίας κατόχου τη στιγμή της λήψης |
Row / Col | Συντεταγμένες κελιού με αρίθμηση από τη μονάδα |
StyleIndex | Ευρετήριο μορφής κελιού XLSX που λήφθηκε από υλοποιημένη ή συσκευασμένη αποθήκευση |
Kind | xlckText, xlckNumber, xlckDateTime, xlckBoolean, xlckFormula, xlckError ή xlckBlank |
Value | Ιδιόκτητη τιμή Variant που λήφθηκε για το τρέχον κελί |
Formula | Κείμενο τύπου για κελιά τύπων, διαφορετικά κενή συμβολοσειρά |
Οι συμβολοσειρές και τα Variant στο TXLSLoadedCellSnapshot είναι ιδιόκτητες τιμές και δεν εκθέτουν εσωτερικούς δείκτες κελιών ή συσκευασμένης αποθήκευσης
Για κελιά τύπων XLSX, η Value είναι η τρέχουσα αποθηκευμένη cached τιμή και η διάσχιση δεν επανυπολογίζει τον τύπο
Για το xlckBlank, η Value είναι Unassigned, το Formula είναι κενό και το StyleIndex ταυτοποιεί την αποθηκευμένη μορφή κελιού
Κατάσταση, ακύρωση και διάρκεια ζωής
Η State είναι xlccBeforeFirst μέχρι την πρώτη επιτυχημένη MoveNext, xlccActive όσο το Current είναι διαθέσιμο και xlccEof μετά την ολοκλήρωση της διάσχισης
Η ανάγνωση του Current πριν από το πρώτο κελί ή μετά το EOF εγείρει EXLSLoadedCellCursorState
Η δημιουργία ή διαγραφή αποθηκευμένων κελιών, η υλοποίηση της συσκευασμένης αποθήκευσης, οι ρητές ανακατασκευές ευρετηρίου ή η προσθήκη, διαγραφή, μετακίνηση και εκκαθάριση φύλλων εργασίας ακυρώνουν τον cursor
Η επόμενη κλήση MoveNext ή Current εγείρει τότε EXLSLoadedCellCursorInvalidated
Η αλλαγή της τιμής, του τύπου ή της μορφής ενός υπάρχοντος κελιού δεν ακυρώνει τον cursor, και ένα ήδη ληφμένο στιγμιότυπο παραμένει αμετάβλητο
Η απελευθέρωση του βιβλίου εργασίας πριν από τον cursor εγείρει επίσης EXLSLoadedCellCursorInvalidated αντί να αφήσει τον cursor με εκκρεμή δείκτη βιβλίου εργασίας
Η επικύρωση γενιάς είναι ανίχνευση fail-fast και δεν καθιστά την ταυτόχρονη μεταβολή και διάσχιση ασφαλείς για νήματα
Παράδειγμα
Cursor := Workbook.CreateLoadedCellCursor;
while Cursor.MoveNext do
begin
Cell := Cursor.Current;
Memo1.Lines.Add(Format('%s!R%dC%d = %s',
[Cell.SheetName, Cell.Row, Cell.Col, VarToStr(Cell.Value)]));
end;