API de raportare compilată
Unitatea lxReport compilează o singură dată placeholder-ele și benzile structurale de raport, apoi aplică date deținute de apelant prin cursoare limitate, fără a rescana obiectele registrului de lucru generate
Contracte de tabele și cursoare
| IXLSReportCursor | MoveNext, RowIndex și Values expun un singur rând forward-only la un moment dat |
| IXLSReportTable | Name, ColumnCount, ColumnNames și CreateCursor definesc o sursă tabelară reutilizabilă |
| IXLSReportRandomAccessTable | RowCount și Values bidimensional adaugă acces indexat folosit de join-uri și indici de relații |
| IXLSReportTableProvider | TryGetTable rezolvă leneș un tabel denumit |
| TXLSReportMemoryTable | AddRow, ColumnIndexOf, CreateCursor, ColumnCount, ColumnNames și RowCount oferă o implementare în memorie deținută |
| TXLSReportDataContext | RegisterTable, AddProvider, TryGetTable, RequireTable, ClearLoadedTables și LoadedTableCount coordonează sursele eager și leneșe |
Furnizori de interogări controlați
IXLSReportQueryExecutor.ExecuteReadOnly menține execuția interogărilor deținută de gazdă și acceptă doar definiții înregistrate de codul aplicației
TXLSReportQueryParameter, TXLSReportQueryParameters și TXLSReportQueryDefinition expun Name, CommandText, TimeoutMS, ParameterCount, Parameters, SetParameter și ClearParameters
TXLSReportQueryProvider folosește RegisterQuery, RemoveQuery, Clear și TryGetTable, cu Count, Definitions și MaximumTimeoutMS expunând lista albă și plafonul de timeout
Relații și combinatori de tabele leneși
TXLSReportRowIndexes și TXLSReportRelationIndex păstrează numerele rândurilor copil în compartimente cu chei compuse; folosiți FindChildRows sau CreateChildCursor și inspectați BucketCount sau IndexedRowCount
TXLSReportAggregateKind, TXLSReportAggregate și TXLSReportJoinKind configurează TXLSReportTableFactory
| Definiții de agregate | CountAggregate, MinAggregate și Aggregate |
| Proiecție și reducere | Top, Columns, NRows și Min |
| Compoziție | Union, Join și Split returnează vederi leneșe fără a copia încărcăturile complete ale rândurilor intermediare |
Benzi de interval denumite și explicite
TXLSReportBandKind selectează expandarea pe rând, coloană sau tabel încrucișat, iar TXLSReportBandState raportează starea ciclului de viață
TXLSCompiledReportBand acceptă un nume definit cu domeniu exact sau CreateForRange, apoi se expandează prin supraîncărcările Run; DefinedName, ScopeSheetIndex, Kind, Sheet, SheetIndex, FirstRow, FirstCol, LastRow, LastCol, TargetCount și State expun planul compilat
TXLSCompiledTableReportBand.Run expandează un rând-șablon de date al unui tabel Excel păstrând metadatele tabelului; inspectați TableName, Sheet, SheetIndex, ExcelTable, TemplateRow și State
TXLSCompiledSheetReportBand.Run creează foi per înregistrare folosind NameColumn, NamePrefix și DeleteTemplateAfterRun; TXLSCompiledOverflowReportBand.Run creează foi de continuare folosind NamePrefix și DeleteTemplateAfterRun
Șabloane pentru întregul registru
TXLSReportTemplateTarget și TXLSReportTemplateTargets selectează celule, comentarii, hyperlinkuri, forme, antete și subsoluri, nume de foi, nume definite și proprietăți de document
TXLSCompiledReportTemplate.Compile captează țintele și expresiile, Analyze returnează TXLSReportIssues adresate, supraîncărcările Run aplică valorile, iar WriteDiagnostics scrie problemele într-o foaie de lucru; TargetAreas și TargetCount descriu suprafața compilată
TXLSReportIssueKind, TXLSReportIssue și TXLSReportIssues identifică conținut placeholder malformat, lipsă, invalid, necunoscut sau ciclic, cu coordonate ale țintei și celulei
Include, imagini și formatare
IXLSReportIncludeResolver.Resolve furnizează fragmente denumite, iar indicatorul său Immutable permite reutilizarea în siguranță; TXLSReportIncludeLibrary oferă Add, Remove, Clear, Freeze, Resolve, Count și Immutable
IXLSReportImageProvider.TryGetImage returnează o TXLSReportImageValue configurată de TXLSReportImageFit; TXLSReportMissingImagePolicy controlează resursele lipsă, în timp ce TXLSReportImageBinder.Apply, MissingPolicy și ClearDirectiveCell actualizează directivele exacte de imagine
TXLSReportDynamicFormat și TXLSReportFormatEvent permit unui rulator să aplice formate numerice, înălțimi de rând și lățimi de coloană per țintă
Execuție reutilizabilă
TXLSReportRunPhase, TXLSReportRunState, TXLSReportRunProgress și TXLSReportRunProgressEvent descriu progresul și limitele de anulare
TXLSCompiledReportRunner expune Run, RunToStream, RunToFile și Cancel, cu ReportTemplate, State, Progress, OnProgress și OnFormat controlând execuția reutilizabilă; validarea eșuată ridică EXLSReportData înainte de scrierile deterministe
Planificare, verificare și migrare
TXLSReportPaginationPlanner oferă planuri KeepTogether, SplitRows, MergeSimilar și BalanceColumns pentru subsoluri fixe și ieșire echilibrată
TXLSReportTemplateChecker oferă Check, CheckBand și CheckTableBand; TXLSReportTemplateMigrator oferă MigrateText și MigrateWorkbook pentru formele de placeholder moștenite acceptate
Exemplu
Table := TXLSReportMemoryTable.Create('Orders', ['Customer', 'Amount']);
Table.AddRow(['A. Datum', 1200]);
Table.AddRow(['Contoso', 950]);
Values := TStringList.Create;
Template := TXLSCompiledReportTemplate.Create(Workbook);
try
Values.Values['Title'] := 'Quarterly orders';
Template.Run(Values);
finally
Template.Free;
Values.Free;
end;