API μεταγλωττισμένων αναφορών
Η μονάδα lxReport μεταγλωττίζει τα placeholders και τις δομικές ζώνες αναφοράς μία φορά και στη συνέχεια εφαρμόζει δεδομένα που ανήκουν στον καλούντα μέσω οριοθετημένων cursors, χωρίς να επανασαρώνει τα δημιουργημένα αντικείμενα του βιβλίου εργασίας
Συμβόλαια πινάκων και cursors
| IXLSReportCursor | Τα MoveNext, RowIndex και Values εκθέτουν μία σειρά τη φορά, μόνο προς τα εμπρός |
| IXLSReportTable | Τα Name, ColumnCount, ColumnNames και CreateCursor ορίζουν μία επαναχρησιμοποιήσιμη πηγή πίνακα |
| IXLSReportRandomAccessTable | Τα RowCount και το δισδιάστατο Values προσθέτουν προσπέλαση με ευρετήριο, που χρησιμοποιείται από τα joins και τα ευρετήρια σχέσεων |
| IXLSReportTableProvider | Το TryGetTable επιλύει έναν ονοματισμένο πίνακα τεμπέλικα |
| TXLSReportMemoryTable | Τα AddRow, ColumnIndexOf, CreateCursor, ColumnCount, ColumnNames και RowCount παρέχουν μια υλοποίηση στη μνήμη που ανήκει στην κλάση |
| TXLSReportDataContext | Τα RegisterTable, AddProvider, TryGetTable, RequireTable, ClearLoadedTables και LoadedTableCount συντονίζουν άμεσες και τεμπέλικες πηγές |
Ελεγχόμενοι πάροχοι ερωτημάτων
Το IXLSReportQueryExecutor.ExecuteReadOnly διατηρεί την εκτέλεση ερωτημάτων στον κεντρικό υπολογιστή και δέχεται μόνο ορισμούς που έχουν καταχωριστεί από τον κώδικα της εφαρμογής
Τα TXLSReportQueryParameter, TXLSReportQueryParameters και TXLSReportQueryDefinition εκθέτουν τα Name, CommandText, TimeoutMS, ParameterCount, Parameters, SetParameter και ClearParameters
Το TXLSReportQueryProvider χρησιμοποιεί τα RegisterQuery, RemoveQuery, Clear και TryGetTable, με τα Count, Definitions και MaximumTimeoutMS να εκθέτουν τη λίστα επιτρεπόμενων ερωτημάτων και το ανώτατο όριο χρόνου
Συνεδρίες δεδομένων ανά εκτέλεση
Η IXLSReportDataSession είναι η απομονωμένη τεμπέλικη cache πίσω από μία εκτέλεση αναφοράς: η DeclareRequest καταχωρεί ένα TXLSReportDataRequest (είδος TXLSReportDataRequestKind: xrdrkNamed ή xrdrkUser) του οποίου η TXLSReportDataSource (είδος TXLSReportDataSourceKind: αδιευκρίνιστο, κελί, ζώνη εύρους, ζώνη πίνακα ή παράσταση) και η λίστα TXLSReportDataParameter περιγράφουν την πηγή και τις τιμές της, και του οποίου το RunControl είναι το handle ακύρωσης IXLSReportRunControl του host· η HasResolver ελέγχει ένα κλειδί πάροχου, οι TryGetTable και RequireTable διαβάζουν αποθηκευμένα alias, οι TryResolveTable και RequireResolvedTable επιλύουν κατ' απαίτηση σε ένα TXLSReportDataResolveResult (κατάσταση TXLSReportDataResolveStatus: xrdrsUnhandled, xrdrsResolved, xrdrsNotFound ή xrdrsDataError), και η TryGetState αναφέρει μια TXLSReportDataSessionState φόρτωσης, επιλυμένη, όχι-βρέθηκε ή σφάλματος δεδομένων, ενώ τα CachedAliasCount και ResolvedAliasCount εκθέτουν το μέγεθος της συνεδρίας
Η IXLSReportDataView.TryGetValue αναζητά μία ονομασμένη τιμή χωρίς να προκαλέσει εξαίρεση, συμπληρώνοντας τους προσπελάστες με δείκτη Count, Names και Values
Σχέσεις και συνδυαστές τεμπέλικων πινάκων
Τα TXLSReportRowIndexes και TXLSReportRelationIndex διατηρούν αριθμούς θυγατρικών σειρών σε κάδους σύνθετου κλειδιού· χρησιμοποιήστε τα FindChildRows ή CreateChildCursor και εξετάστε τα BucketCount ή IndexedRowCount
Τα TXLSReportAggregateKind, TXLSReportAggregate και TXLSReportJoinKind διαμορφώνουν το TXLSReportTableFactory
| Ορισμοί συγκεντρωτικών | CountAggregate, MinAggregate και Aggregate |
| Προβολή και αναγωγή | Top, Columns, NRows και Min |
| Σύνθεση | Τα Union, Join και Split επιστρέφουν τεμπέλικες όψεις χωρίς να αντιγράφουν πλήρη ενδιάμεσα φορτία σειρών |
Ονοματισμένες και ρητές ζώνες περιοχών
Το TXLSReportBandKind επιλέγει επέκταση κατά σειρά, στήλη ή διασταύρωση (cross-tab), και το TXLSReportBandState αναφέρει την κατάσταση κύκλου ζωής
Το TXLSCompiledReportBand δέχεται ένα ονοματισμένο όνομα ακριβούς εμβέλειας ή το CreateForRange και στη συνέχεια επεκτείνεται μέσω των υπερφορτώσεων Run· τα DefinedName, ScopeSheetIndex, Kind, Sheet, SheetIndex, FirstRow, FirstCol, LastRow, LastCol, TargetCount και State εκθέτουν το μεταγλωττισμένο σχέδιο
Το TXLSCompiledTableReportBand.Run επεκτείνει μία σειρά προτύπου δεδομένων ενός πίνακα Excel διατηρώντας τα μεταδεδομένα του πίνακα· εξετάστε τα TableName, Sheet, SheetIndex, ExcelTable, TemplateRow και State
Το TXLSCompiledSheetReportBand.Run δημιουργεί φύλλα ανά εγγραφή χρησιμοποιώντας τα NameColumn, NamePrefix και DeleteTemplateAfterRun· το TXLSCompiledOverflowReportBand.Run δημιουργεί φύλλα συνέχειας χρησιμοποιώντας τα NamePrefix και DeleteTemplateAfterRun
Πρότυπα ολόκληρου βιβλίου εργασίας
Τα TXLSReportTemplateTarget και TXLSReportTemplateTargets επιλέγουν κελιά, σχόλια, υπερσυνδέσμους, σχήματα, κεφαλίδες και υποσέλιδα, ονόματα φύλλων, ονοματισμένα ονόματα και ιδιότητες εγγράφου
Το TXLSCompiledReportTemplate.Compile συλλαμβάνει στόχους και εκφράσεις, το Analyze επιστρέφει προσδιορισμένα TXLSReportIssues, οι υπερφορτώσεις Run εφαρμόζουν τιμές και το WriteDiagnostics γράφει ζητήματα σε ένα φύλλο εργασίας· τα TargetAreas και TargetCount περιγράφουν τη μεταγλωττισμένη επιφάνεια
Τα TXLSReportIssueKind, TXLSReportIssue και TXLSReportIssues εντοπίζουν κακοσχηματισμένο, ελλιπές, άκυρο, άγνωστο ή κυκλικό περιεχόμενο placeholders με συντεταγμένες στόχου και κελιού
Ενσωματώσεις, εικόνες και μορφοποίηση
Το IXLSReportIncludeResolver.Resolve παρέχει ονοματισμένα τμήματα και η σημαία Immutable επιτρέπει την ασφαλή επαναχρησιμοποίηση· το TXLSReportIncludeLibrary παρέχει τα Add, Remove, Clear, Freeze, Resolve, Count και Immutable
Το IXLSReportImageProvider.TryGetImage επιστρέφει μια TXLSReportImageValue που διαμορφώνεται από το TXLSReportImageFit· το TXLSReportMissingImagePolicy ελέγχει τους ελλιπείς πόρους, ενώ τα TXLSReportImageBinder.Apply, MissingPolicy και ClearDirectiveCell ενημερώνουν ακριβείς οδηγίες εικόνας
Τα TXLSReportDynamicFormat και TXLSReportFormatEvent επιτρέπουν σε έναν εκτελεστή να εφαρμόζει μορφές αριθμών, ύψη σειρών και πλάτη στηλών ανά στόχο
Επαναχρησιμοποιήσιμη εκτέλεση
Τα TXLSReportRunPhase, TXLSReportRunState, TXLSReportRunProgress και TXLSReportRunProgressEvent περιγράφουν την πρόοδο και τα όρια ακύρωσης
Το TXLSCompiledReportRunner εκθέτει τα Run, RunToStream, RunToFile και Cancel, με τα ReportTemplate, State, Progress, OnProgress και OnFormat να ελέγχουν την επαναχρησιμοποιήσιμη εκτέλεση· η αποτυχημένη επικύρωση εγείρει EXLSReportData πριν από τις ντετερμινιστικές εγγραφές
Κύκλος ζωής δημιουργίας και πηγές προτύπων
Το TXLSReportLifecyclePhase ταυτοποιεί όρια ανάγνωσης προτύπου, δημιουργίας βιβλίου εργασίας και δημιουργίας φύλλου εργασίας, ενώ το TXLSReportLifecycleOutcome διακρίνει callbacks που μπήκαν, ολοκληρώθηκαν, ακυρώθηκαν ή απέτυχαν
Το TXLSReportLifecycleContext παρέχει το ενεργό βιβλίο εργασίας και φύλλο εργασίας, σταθερή ταυτότητα φύλλου, αρχικές και τρέχουσες συντεταγμένες, ένα IXLSReportDataView μόνο για ανάγνωση, πλήθος στόχων και λεπτομέρειες πρώτης αποτυχίας· κάθε before γεγονός που μπαίνει λαμβάνει ένα ζευγαρωμένο after γεγονός ακόμα κι αν η δημιουργία ακυρωθεί ή αποτύχει
Οι TXLSCompiledReportRunner.BeforeGenerateWorkbook, AfterGenerateWorkbook, BeforeGenerateSheet και AfterGenerateSheet παρατηρούν ένα παγωμένο σύνολο αρχικών φύλλων εργασίας· αλλαγές δομής μέσω callbacks πυροδοτούν ανανέωση μεταγλώττισης χωρίς να προσθέτουν τα νεοδημιουργημένα φύλλα στην τρέχουσα εκτέλεση
Ο TXLSReportGenerator δέχεται βιβλίο εργασίας, όνομα αρχείου, ροή ιδιοκτησίας του καλούντα ή κρυπτογραφημένο αρχείο και προσθέτει τα BeforeReadTemplate και AfterReadTemplate στα γεγονότα δημιουργίας· η TXLSReportModificationMode επιλέγει συμβατή in-place μεταβολή ή απομονωμένη δημιουργία με ατομικό κλώνο. Τα μόνο για ανάγνωση SourceKind (τύπος TXLSReportTemplateSourceKind: xrtsWorkbook, xrtsFile, xrtsStream ή xrtsEncryptedFile) και TemplateWorkbook αναφέρουν την configured πηγή προτύπου, ενώ τα ModificationMode και IncludeResolver ορίζονται πριν από μια εκτέλεση
Τα πρότυπα αρχείου και ροής έχουν προεπιλογή το xrmAtomicClone· οι ροές εισόδου με δυνατότητα seek επαναφέρουν την αρχική τους θέση, οι forward-only ροές καταναλώνονται σε οριοθετημένα blocks, οι ροές του καλούντα παραμένουν ανοιχτές, και οι ροές ή αρχεία εξόδου αντικαθίστανται μόνο μετά από επιτυχή ολοκλήρωση
Σχεδιασμός, έλεγχος και μετεγκατάσταση
Το TXLSReportPaginationPlanner παρέχει σχέδια KeepTogether, SplitRows, MergeSimilar και BalanceColumns για σταθερά υποσέλιδα και ισορροπημένη έξοδο
Το TXLSReportTemplateChecker παρέχει τα Check, CheckBand και CheckTableBand· το TXLSReportTemplateMigrator παρέχει τα MigrateText και MigrateWorkbook για υποστηριζόμενες παλαιού τύπου μορφές placeholders
Παράδειγμα σε Delphi
Context := TXLSReportDataContext.Create;
Table := TXLSReportMemoryTable.Create('Orders', ['Customer', 'Amount']);
Table.AddRow(['A. Datum', 1200]);
Context.RegisterTable(Table);
Template := TXLSCompiledReportTemplate.Create(Workbook);
Template.DataContext := Context;
Runner := TXLSCompiledReportRunner.Create(Template);
try
Runner.StrictDataAccess := True;
Runner.ErrorMode := xremWriteAndContinue;
Runner.RuntimeDiagnosticsSheetName := 'Report Diagnostics';
Runner.RunToFile(Values, OutputFileName);
RunResult := Runner.LastResult;
finally
Runner.Free;
Template.Free;
Context.Free;
end;
Παράδειγμα σε C++Builder
Lxreport::TXLSReportMemoryTable *tableObject = new Lxreport::TXLSReportMemoryTable(L"Orders", columns, 1); Lxreport::_di_IXLSReportTable table; tableObject->GetInterface(table); tableObject->AddRow(row, 1); context->RegisterTable(table); Lxreport::TXLSCompiledReportTemplate *reportTemplate = new Lxreport::TXLSCompiledReportTemplate(workbook); reportTemplate->DataContext = context; Lxreport::TXLSCompiledReportRunner *runner = new Lxreport::TXLSCompiledReportRunner(reportTemplate); runner->StrictDataAccess = true; runner->ErrorMode = Lxreport::xremWriteAndContinue; runner->RuntimeDiagnosticsSheetName = L"Report Diagnostics"; runner->RunToFile(values, outputFileName); Lxreport::_di_IXLSReportRunResult runResult = runner->LastResult;
Τα FeatureShowcase για Delphi και XlsxFeatureGallery για C++Builder περιέχουν πλήρεις εκτελέσιμες εκδοχές που επαληθεύουν την κατάσταση ολοκληρώθηκε-με-σφάλματα και το πλήθος των σφαλμάτων πριν αποδεσμεύσουν τον runner