Τεκμηρίωση HotXLS

Μέθοδος TryGetCachedFormulaValue

Διαβάζει ένα αποθηκευμένο αποτέλεσμα τύπου χωρίς να αξιολογεί τον τύπο ή να αλλάζει την κατάσταση του βιβλίου εργασίας

Η μέθοδος είναι διαθέσιμη τόσο στο IXLSWorkbook όσο και στο TXLSXWorkbook· η υλοποίηση βιβλίου εργασίας πακέτου καλύπτει αρχεία XLSX και ODS

Κώδικας ανεξάρτητος από μηχανή μπορεί να αποκτήσει ένα IXLSFormulaCacheReader από κάποια από τις δύο μηχανές μέσω του CreateFormulaCacheReader και να χρησιμοποιήσει την ίδια μέθοδο ερωτήματος

Σύνταξη

function TryGetCachedFormulaValue(
  SheetIndex, Row, Col: Integer;
  out AInfo: TXLSFormulaCacheInfo): Boolean;

Συντεταγμένες και τιμή επιστροφής

Τα SheetIndex, Row και Col έχουν αρίθμηση από τη μονάδα

Η μέθοδος επιστρέφει True μόνο για κελί τύπου του οποίου η κατάσταση cache είναι xlfcsLoaded ή xlfcsCalculated

Άκυρες συντεταγμένες, ανύπαρκτα κελιά και κελιά χωρίς τύπο επιστρέφουν False με xlfcsNotFormula

Ένας τύπος χωρίς αποθηκευμένο αποτέλεσμα επιστρέφει False με xlfcsMissing· ένας τύπος που είχε προηγουμένως cache και του οποίου ο τύπος ή ο υπολογισμός απέτυχαν μετά από μεταβολή επιστρέφει False με xlfcsInvalidated

Πληροφορίες cache

ΠεδίοΣημασία
StatexlfcsNotFormula, xlfcsMissing, xlfcsLoaded, xlfcsCalculated ή xlfcsInvalidated
KindxlfcvBlank, xlfcvNumber, xlfcvDateTime, xlfcvString, xlfcvBoolean ή xlfcvError
ValueΗ ιδιόκτητη cached τιμή Variant όταν η μέθοδος επιστρέφει True, διαφορετικά Unassigned

Τα κενά αποτελέσματα, οι κενές συμβολοσειρές, το Boolean false, το αριθμητικό μηδέν και τα σφάλματα διατηρούν διακριτά είδη και δεν χρησιμοποιούνται ως δείκτες παρουσίας cache

Οι αριθμητικές cache του BIFF παραμένουν Double επειδή η εγγραφή δεν έχει δείκτη τύπου ημερομηνίας· οι cache σφαλμάτων επιστρέφονται ως varError

Για βιβλία εργασίας πακέτου, οι τιμές ημερομηνίας OOXML t="d" και ODF επιστρέφουν varDate, το OOXML t="e" επιστρέφει varError και ένα cached κενό ODF διατηρείται με τον τύπο τιμής void

Η αλλαγή ενός τύπου ακυρώνει την προηγούμενη cache του, ενώ η ανάθεση cached τιμής και ακολούθως ανάθεση του τύπου του καταγράφει μια υπολογισμένη cache

Κάθε μέλος κοινού τύπου διατηρεί τη δική του παρουσία cache και τιμή· ένας follower χωρίς αποθηκευμένο αποτέλεσμα αναφέρει xlfcsMissing αντί να κληρονομήσει την cache του ριζικού μέλους

Σύμβαση χωρίς υπολογισμό

Η μέθοδος εκτελεί απευθείας αναζήτηση σε αραιά κελιά και δεν καλεί ποτέ τον υπολογιστή, μια επανάκληση συνάρτησης χρήστη, αποσυμπίεση tokens τύπου, ενημερώσεις εξαρτήσεων, εγγραφές cache ή αλλαγές κατάστασης dirty

Χρησιμοποιήστε την κανονική ιδιότητα Value του κελιού όταν απαιτείται υπολογισμός

Διάρκεια ζωής reader

Το CreateFormulaCacheReader επιστρέφει έναν προσαρμογέα μόνο για ανάγνωση που υποστηρίζεται από μίσθωση διάρκειας ζωής του βιβλίου εργασίας, χωρίς μεταβίβαση ιδιοκτησίας του βιβλίου εργασίας

Μετά την καταστροφή του βιβλίου εργασίας, κάθε ερώτημα μέσω του προσαρμογέα εγείρει EXLSFormulaCacheReaderInvalidated αντί να αναφερθεί σε απελευθερωμένη κατάσταση του βιβλίου εργασίας

Παράδειγμα

Reader := Workbook.CreateFormulaCacheReader;
if Reader.TryGetCachedFormulaValue(1, 4, 2, Info) then
  Memo1.Lines.Add(VarToStr(Info.Value))
else if Info.State = xlfcsMissing then
  Memo1.Lines.Add('Formula has no stored result');

Δείτε επίσης