Τεκμηρίωση HotXLS

API άμεσης ανάγνωσης και εγγραφής

Τα TXLSDirectReader και TXLSDirectWriter επεξεργάζονται πακέτα XLSX χωρίς να διατηρούν πλήρες πλέγμα φύλλου εργασίας στη μνήμη, οπότε οι κλήσεις API που περιγράφουν ένα φύλλο πρέπει να γίνονται πριν ή κατά τη διάρκεια της αντίστοιχης φάσης ροής

Κύκλος ζωής εγγραφής και τιμές κελιών

Το TXLSDirectWriter.BeginFile ή BeginStream ξεκινά ένα πακέτο, οι μέθοδοι φύλλου ορίζουν ένα φύλλο εργασίας κάθε φορά και το Finish οριστικοποιεί το τελικό πακέτο

Κελιά βαθμωτών τιμώνWriteString, WriteRichString, WriteNumber, WriteBoolean, WriteDateTime και WriteError
Κελιά τύπωνΤα WriteFormula, WriteFormulaNumber, WriteFormulaString, WriteFormulaBoolean, WriteFormulaDateTime και WriteFormulaError δέχονται αποθηκευμένα αποτελέσματα που παρέχει ο καλών
Κοινές συμβολοσειρέςΤο UseSharedStrings ενεργοποιεί την αφαίρεση διπλοτύπων συμβολοσειρών σε επίπεδο πακέτου
ΣτατιστικάΤο CellCount αναφέρει τον αριθμό των εκπεμπόμενων κελιών
ΤμήματαΗ FreezePanes(ColSplit, RowSplit) γράφει παγωμένο διαχωρισμό στη δοσμένη στήλη και γραμμή με βάση το 1

Οι σειρές και οι στήλες ξεκινούν από το 1 στη δημόσια επιφάνεια εγγραφής και πρέπει να παρέχονται με τη σειρά του φύλλου εργασίας προς τα εμπρός

Επαναχρησιμοποιήσιμα στυλ

Το AddCellStyle καταχωρίζει ένα αμετάβλητο handle στυλ σε επίπεδο πακέτου και το CloneCellStyle προέρχεται από νέο handle χωρίς να διατηρεί σειρές φύλλου εργασίας

Ονοματισμένα ονόματα και υπερσύνδεσμοι

Τα AddDefinedName, AddLocalDefinedName, AddDefinedRange και AddLocalDefinedRange προσθέτουν ονόματα σε επίπεδο βιβλίου εργασίας ή φύλλου πριν από την οριστικοποίηση του πακέτου

Τα AddHyperlink, AddHyperlinkRange, AddInternalHyperlink και AddInternalHyperlinkRange εκπέμπουν εξωτερικές σχέσεις ή εσωτερικές θέσεις φύλλου για ένα κελί ή μια περιοχή

Επικύρωση δεδομένων

Τα AddDataValidation και AddDataValidationSqRef εκθέτουν την πλήρη επιφάνεια κανόνων, ενώ τα AddListValidation, AddWholeNumberValidation, AddDecimalValidation, AddDateValidation, AddTimeValidation, AddTextLengthValidation και AddCustomValidation παρέχουν τυποποιημένους βοηθούς

Υπό όρους μορφοποίηση

Τα AddConditionalFormat, AddConditionalFormatExpression, AddConditionalFormatContainsText, AddConditionalFormatNotContainsText, AddConditionalFormatBeginsWith, AddConditionalFormatEndsWith, AddConditionalFormatTop10, AddConditionalFormatAboveAverage, AddConditionalFormatDuplicateValues, AddConditionalFormatUniqueValues, AddConditionalFormatContainsBlanks, AddConditionalFormatNotContainsBlanks, AddConditionalFormatContainsErrors και AddConditionalFormatNotContainsErrors προσθέτουν κανόνες βαθμωτών τιμών

Τα AddConditionalFormatDataBar, AddConditionalFormatColorScale2, AddConditionalFormatColorScale3 και AddConditionalFormatIconSet προσθέτουν οπτικούς κανόνες· το ClearConditionalFormats αφαιρεί τους εκκρεμείς κανόνες για το τρέχον φύλλο

AutoFilter και πίνακες

Τα AddAutoFilterValue, AddAutoFilterDateGroup και AddAutoFilterSortCondition διαμορφώνουν το φίλτρο του φύλλου εργασίας

Το AddTable δημιουργεί ένα τμήμα πίνακα και τα AddTableFilterValue, AddTableFilterDateGroup και AddTableSortCondition διαμορφώνουν την κατάσταση φίλτρου και ταξινόμησής του

Προστασία και αλλαγές σελίδας

Τα ProtectSheet, UnprotectSheet, AddProtectedRange και ClearProtectedRanges διαμορφώνουν την προστασία φύλλου εργασίας· τα ProtectWorkbook και UnprotectWorkbook διαμορφώνουν τη δομή του βιβλίου εργασίας και τα κλειδώματα παραθύρων

Τα AddHorizontalPageBreak και AddVerticalPageBreak εκπέμπουν χειροκίνητες αλλαγές σελίδας για το τρέχον φύλλο εργασίας

Διαγνωστικά αποθήκευσης της άμεσης ανάγνωσης

Το TXLSDirectReader.SharedStringMemoryLimit περιορίζει τη μνήμη των αποκωδικοποιημένων κοινών συμβολοσειρών, το SharedStringsOnDisk αναφέρει τη μετεγκατάσταση σε προσωρινή αποθήκευση με ευρετήριο, το SharedStringCount αναφέρει τον αριθμό των φορτωμένων εγγραφών και το ParallelDiag εκθέτει διαγνωστικά του οριοθετημένου παράλληλου αναλυτή

Προβολή αναγνώστη και κατάσταση τύπων

Τα FirstRow, LastRow, IncludeColumn και ClearColumnProjection ωθούν την επιλογή γραμμών και στηλών με βάση το 1 μέσα στον parser του φύλλου εργασίας, πριν τη δέσμευση τιμών, τύπων ή rich-text

Το IncludeFormulaText έχει προεπιλογή true· η απενεργοποίησή του κρατά αποθηκευμένες τιμές, συντεταγμένες, στυλ και HasFormula, ενώ το FormulaTextAvailable γίνεται false και το Formula παραμένει κενό

Δρομέας σειρών

Η TXLSRowCursor.Open δέχεται αρχεία ή ροές XLS, XLSX, XLSM, ODS, CSV και TSV· η αυτόματη ανίχνευση ZIP διακρίνει πακέτα ODS από βιβλία εργασίας Open XML πριν ανοίξει ένα φύλλο

Τα TXLSRowCursor.SelectSheet και SelectSheetByName επιλέγουν ένα φύλλο εργασίας· τα SheetCount, SheetNames, SheetIndex, RowIndex και Eof εκθέτουν την κατάσταση διάσχισης, ενώ το SharedStringMemoryLimit εφαρμόζει την ίδια οριοθετημένη πολιτική κοινών συμβολοσειρών με την άμεση ανάγνωση

Τα FirstRow, LastRow, IncludeColumn και ClearColumnProjection χρησιμοποιούν τα ίδια φίλτρα με βάση το 1 σε όλες τις μορφές του cursor· οι pass options δεν μπορούν να αλλάξουν μεταξύ FindFirst και EOF, αλλά γίνονται πάλι μεταβαλλτά μετά από EOF, επιλογή φύλλου ή κλείσιμο

Κάθε TXLSRowCursorCell αναφέρει το HasFormula ανεξάρτητα από το FormulaTextAvailable· το classic XLS εκθέτει παρουσία τύπου και αποθηκευμένα αποτελέσματα χωρίς να ισχυρίζεται διαθέσιμο κείμενο tokens, ενώ το IncludeFormulaText μπορεί να καταστείλει το κείμενο τύπων XLSX και ODS πριν τη συσσώρευση

Η διάσχιση ODS κρατά ένα φυσικό πρότυπο γραμμής, περικόπτει τα επαναλαμβανόμενα blocks γραμμών στο ζητούμενο διάστημα, μεταβαίνει απευθείας μεταξύ επιλεγμένων στηλών μέσα σε επαναλαμβανόμενα spans, προχωρά πάνω από καλυμμένα κελιά χωρίς να τα επιστρέψει ως τιμές, και αναφέρει άκυρους ή στο πλέγμα οριοθετημένους μετρητές επαναλήψεων μέσω OnSkippedRecord

Το State διακρίνει xrcsClosed, xrcsBeforeFirst, xrcsActive, xrcsEof, xrcsCancelled και xrcsFaulted· το Cancel είναι idempotent, ακυρώνει την τρέχουσα γραμμή και απελευθερώνει τη ροή του ενεργού φύλλου διατηρώντας την πηγή, ώστε μια ρητή επιλογή φύλλου να ξεκινήσει νέο πέρασμα

Το overload ροής έχει προεπιλογή xsoBorrowed, επαναφέρει την αρχική θέση του καλούντα στο κλείσιμο, και δέχεται xsoOwned για μεταβίβαση ιδιοκτησίας μετά από επιτυχές άνοιγμα· τα αποτυχημένα ανοίγματα δεν καταναλώνουν ποτέ την ιδιοκτησία του καλούντα

Η CurrentRowView δανείζεται τον πίνακα της τρέχουσας γραμμής χωρίς αντιγραφή και ελέγχει μια γενιά πριν από κάθε πρόσβαση· η προώθηση, η επιλογή, η ακύρωση, το κλείσιμο ή η καταστροφή του cursor ακυρώνει την προβολή και προκαλεί EXLSRowCursorViewInvalidated σε μελλοντική πρόσβαση

Το PeakRowBufferedBytes είναι μια μονότονη εκτίμηση από το πιο πρόσφατο Open των εγγραφών κελιών, των managed payloads, του rich text και των δεδομένων format-backend που διατηρούνται για μία λογική γραμμή· προορίζεται για διαγνωστικά παλινδρόμησης οριοθετημένης μνήμης και όχι για ακριβή λογιστική του heap

Το SheetPassesStarted μετρά τις επιτυχείς εκκινήσεις backend φύλλου εργασίας· η εξέταση ονομάτων φύλλων ή η παράλειψη φύλλου μέσω του facade callback δεν ανοίγει το part του φύλλου εργασίας

Πρόσοψη callback προς τα εμπρός

Ο TXLSForwardReader αναθέτει την αποκωδικοποίηση XLS, XLSX, ODS, CSV και TSV στον TXLSRowCursor, μετατρέπει κάθε κελί της τρέχουσας γραμμής σε callback OnCell, και διατηρεί τα ίδια συμβόλαια για όρια γραμμών, προβολή στηλών, κατάσταση τύπων, rich text, κωδικό, παραλειπόμενες εγγραφές, θέση ροής και οριοθετημένο buffer

Τα PeakRowBufferedBytes και SheetPassesStarted εκθέτουν τα κοινά διαγνωστικά του cursor στην επιφάνεια callback, ενώ το classic XLS διατηρεί επιπλέον τα ClassicBytesRead και ClassicPeakBufferedBytes

Γεγονότα αναγνώστη και τύποι εγγραφών

Ο αναγνώστης και ο row cursor εκθέτουν προαιρετικά callbacks και απλούς τύπους, όλους δηλωμένους στο lxDirectRead. Κάθε callback ακολουθεί το ίδιο σχήμα: η εγγραφή περιγράφει ένα στοιχείο σε ροή, και η ορισμός του Abort σταματά τη σάρωση (τα γεγονότα φύλλου δέχονται επιπλέον SkipSheet)

ΚελιάΗ OnCell (τύπος TXLSDirectCellEvent) παραδίδει ένα TXLSDirectCell ανά κελί, του οποίου το Kind (TXLSDirectCellKind: xdkEmpty, xdkNumber, xdkString, xdkBoolean, xdkDate, xdkError) επιλέγει το populated πεδίο τιμής· το rich text ταξιδεύει ως TXLSDirectRichText με εγγραφές TXLSDirectRichTextRun, καθεμία με TXLSDirectRichColor (είδος TXLSDirectRichColorKind), TXLSDirectRichUnderline και TXLSDirectRichVertAlign, συν προαιρετικά δεδομένα TXLSDirectPhoneticProperties και TXLSDirectPhoneticRun
Πλαίσιο φύλλουΗ OnSheet (TXLSDirectSheetEvent) μπορεί να παραλείψει ένα ολόκληρο φύλλο εργασίας πριν αναλυθούν τα κελιά του· η OnSkippedRecord (TXLSDirectSkippedEvent) αναφέρει κακοδιατυπωμένο ή κομμένο περιεχόμενο με το id εγγραφής και τον λόγο
Διάταξη φύλλουΟι OnDimension, OnSheetFormat, OnColumn, OnRow, OnMerge και OnPane παραδίδουν εγγραφές TXLSDirectDimension, TXLSDirectSheetFormat, TXLSDirectColumn, TXLSDirectRow, TXLSDirectMerge και TXLSDirectPane· η κατάσταση panes χρησιμοποιεί TXLSDirectPaneState (xdpsSplit, xdpsFrozen, xdpsFrozenSplit, xdpsUnknown)
Κατάσταση cursorΤο TXLSRowCursor.State είναι ένα TXLSRowCursorState (xrcsClosed, xrcsBeforeFirst, xrcsActive, xrcsEof, xrcsCancelled, xrcsFaulted)· το overload ροής της Open παίρνει ένα TXLSStreamOwnership (προεπιλογή xsoBorrowed, xsoOwned για μεταβίβαση ιδιοκτησίας), και η CurrentRowView επιστρέφει μια δανεισμένη προβολή IXLSRowCursorView της οποίας η ιδιότητα Valid προστατεύει την πρόσβαση και της οποίας η ValueByCol διαβάζει ένα κελί της δανεισμένης γραμμής χωρίς αντιγραφή· η προβολή ακυρώνεται όταν ο cursor προχωρήσει

Τύποι παραμέτρων και στυλ του writer

Οι τυποποιημένοι βοηθοί του writer (lxDirectWrite) δέχονται εγγραφές και enums ώστε οι κλήσεις να μένουν χωρίς δεσμεύσεις: η WriteRichString παίρνει ένα TXLSDirectRichText· η AddCellStyle χτίζει ένα στυλ επιπέδου πακέτου από ένα TXLSDirectCellStyle του οποίου η στοίχιση (TXLSDirectHorizontalAlignment, TXLSDirectVerticalAlignment), η υπογράμμιση (TXLSDirectUnderline), το pattern γεμίσματος (TXLSDirectFillPattern) και οι πλευρές περιγράμματος (TXLSDirectStyleBorder με TXLSDirectBorderSide) κατοπτρίζουν το μοντέλο στυλ OOXML. Η μορφοποίηση υπό όρους περνά ένα TXLSDirectConditionalFormat με TXLSDirectCfKind / TXLSDirectCfOperator / TXLSDirectCfValue / TXLSDirectCfValueKind και TXLSDirectIconSetType, η επικύρωση δεδομένων ένα TXLSDirectDataValidation, οι πίνακες ένα TXLSDirectTable, οι υπερσύνδεσμοι ένα TXLSDirectHyperlink, τα ονομασμένα ονόματα ένα TXLSDirectDefinedName, τα διαφορικά στυλ ένα TXLSDirectDxfStyle, τα σχόλια ένα TXLSDirectComment, οι εικόνες ένα TXLSDirectImage με TXLSDirectImageFormat, τα γραφήματα ένα TXLSDirectChart με TXLSDirectChartSeries και TXLSDirectChartType, τα merges ένα TXLSDirectMergeRange, τα προστατευμένα εύρη ένα TXLSDirectProtectedRange, η προστασία φύλλου ένα σύνολο TXLSDirectSheetProtectionOptions από TXLSDirectSheetProtectionOption, η κατάσταση ταξινόμησης auto-filter ένα TXLSDirectSortState, οι επιλογές στήλης ένα TXLSDirectColumnOption, και η γεωμετρία σελίδας μια εγγραφή TXLSDirectPageMargins

TXLSDirectNeedRow = procedure(Sender: TObject; RowIndex: Integer;
  var Eof: Boolean) of object;

function XLSDirectColName(Col: Integer): WideString;
function XLSDirectParseRef(const Ref: WideString;
  out Col, Row: Integer): Boolean;
function XLSDirectPasswordHash(const Password: WideString): WideString;
      

Η OnNeedRow τραβάει γραμμές από την εφαρμογή: ο προμηθευτής γράφει τα κελιά της γραμμής κατευθείαν μέσω του writer και αφήνει Eof = False, ή δηλώνει εξάντληση με Eof = True για να σταματήσει ο βρόχος. Οι βοηθοί μετατρέπουν μεταξύ συντεταγμένων και primitives προστασίας: η XLSDirectColName αποδίδει μια στήλη με βάση το μηδέν στα γράμματά της A1, η XLSDirectParseRef αναλύει μια αναφορά κελιού A1, και η XLSDirectPasswordHash υπολογίζει το legacy password hash που αποθηκεύουν οι εγγραφές προστασίας φύλλου

Δείτε επίσης