API kompiliranog izvještavanja
Jedinica lxReport kompilira zamjenske oznake i strukturne izvještajne trake jednom, a zatim primjenjuje podatke u vlasništvu pozivatelja kroz ograničene pokazivače bez ponovnog skeniranja generiranih objekata radne knjige
Ugovori tablica i pokazivača
| IXLSReportCursor | MoveNext, RowIndex i Values izlažu po jedan redak unaprijed samo za čitanje |
| IXLSReportTable | Name, ColumnCount, ColumnNames i CreateCursor definiraju ponovno upotrebljiv tablični izvor |
| IXLSReportRandomAccessTable | RowCount i dvodimenzionalni Values dodaju indeksirani pristup koji koriste spajanja i relacijski indeksi |
| IXLSReportTableProvider | TryGetTable lijeno razrješuje imenovanu tablicu |
| TXLSReportMemoryTable | AddRow, ColumnIndexOf, CreateCursor, ColumnCount, ColumnNames i RowCount pružaju implementaciju u vlasništvu u memoriji |
| TXLSReportDataContext | RegisterTable, AddProvider, TryGetTable, RequireTable, ClearLoadedTables i LoadedTableCount usklađuju željne i liene izvore |
Kontrolirani davatelji upita
IXLSReportQueryExecutor.ExecuteReadOnly zadržava izvršavanje upita u vlasništvu domaćina i prihvaća samo definicije koje je registrirao aplikacijski kod
TXLSReportQueryParameter, TXLSReportQueryParameters i TXLSReportQueryDefinition izlažu Name, CommandText, TimeoutMS, ParameterCount, Parameters, SetParameter i ClearParameters
TXLSReportQueryProvider koristi RegisterQuery, RemoveQuery, Clear i TryGetTable, pri čemu Count, Definitions i MaximumTimeoutMS izlažu popis dopuštenih upita i gornju granicu vremenskog ograničenja
Relacije i lijeni kombinatori tablica
TXLSReportRowIndexes i TXLSReportRelationIndex zadržavaju brojeve podređenih redaka u grupama složenog ključa; koristite FindChildRows ili CreateChildCursor i provjerite BucketCount ili IndexedRowCount
TXLSReportAggregateKind, TXLSReportAggregate i TXLSReportJoinKind konfiguriraju TXLSReportTableFactory
Relacije i lijeni kombinatori tablica
TXLSReportRowIndexes i TXLSReportRelationIndex zadržavaju brojeve podređenih redaka u grupama složenog ključa; koristite FindChildRows ili CreateChildCursor i provjerite BucketCount ili IndexedRowCount
TXLSReportAggregateKind, TXLSReportAggregate i TXLSReportJoinKind konfiguriraju TXLSReportTableFactory, čiji filtri redaka uspoređuju kroz TXLSReportFilterOperator (xrfoEqual, xrfoNotEqual, xrfoGreater, xrfoGreaterEqual, xrfoLess, xrfoLessEqual, xrfoContains, xrfoStartsWith, xrfoEndsWith)
| Definicije agregata | CountAggregate, MinAggregate i Aggregate |
| Projekcija i redukcija | Top, Columns, NRows i Min |
| Kompozicija | Union, Join i Split vraćaju liene prikaze bez kopiranja cjelovitih međupodataka redaka |
Imenovane i eksplicitne rasponne trake
TXLSReportBandKind bira širenje po retku, stupcu ili unakrsnoj tablici, a TXLSReportBandState izvještava stanje životnog ciklusa: ready, running, completed, completed-with-errors, canceled ili failed
TXLSCompiledReportBand prihvaća definirano ime točnog opsega ili CreateForRange, a zatim se širi kroz preopterećenja Run-a; DefinedName, ScopeSheetIndex, Kind, Sheet, SheetIndex, FirstRow, FirstCol, LastRow, LastCol, TargetCount i State izlažu kompilirani plan
EmptyBandPolicy (tip TXLSEmptyBandPolicy) upravlja time što traka čini sa redcima predloška kada je skup podataka prazan — xreKeepTemplate ostavlja retke netaknutima, xreClearTemplate čisti ćelije trake uključujući zamjenske oznake, a xreDeleteTemplate briše retke predloška — dok DeleteLastRow uklanja posljednjih BandHeight redaka proširenog bloka nakon što se njegove kopije smjeste, tako da prateći redci X-raspona sepatoria kolapsiraju
FixedBand tjera retke trake da prepisuju retke ispod predloška umjesto da umeću nove, čime okolni sadržaj zadržava fiksnu poziciju
TXLSCompiledTableReportBand.Run širi jedan redak predloška podataka Excel tablice uz očuvanje metapodataka tablice; pregledajte TableName, Sheet, SheetIndex, ExcelTable, TemplateRow i State, te konfigurirajte ista V2 svojstva slika koja izlažu rasponne trake
Rasponne i Excel-tablične trake dijele ErrorMode, StrictDataAccess, RuntimeLimits i nepromjenjive snimke LastResult-a; xremWriteAndContinue zapisuje samo izričite oporavljive greške ćelija kao literalne dijagnostike, bilježi izvorni BandInputRow i stvarne izlazne koordinate te nastavlja s kasnijim ciljevima i recima, dok strukturne, otkazne, ograničavajuće resurse, callback i rollback greške ostaju fatalne
TXLSCompiledSheetReportBand.Run stvara listove po zapisu koristeći NameColumn, NamePrefix i DeleteTemplateAfterRun; TXLSCompiledOverflowReportBand.Run stvara nastavne listove koristeći NamePrefix i DeleteTemplateAfterRun
Imenovane i eksplicitne rasponne trake
TXLSReportBandKind bira širenje po retku, stupcu ili unakrsnoj tablici, a TXLSReportBandState izvještava o stanju životnog ciklusa
TXLSCompiledReportBand prihvaća točno određeno ime ili CreateForRange, a zatim se širi kroz preopterećenja metode Run; DefinedName, ScopeSheetIndex, Kind, Sheet, SheetIndex, FirstRow, FirstCol, LastRow, LastCol, TargetCount i State izlažu kompilirani plan
TXLSCompiledTableReportBand.Run širi jedan redak predloška podataka Excel tablice uz očuvanje metapodataka tablice; provjerite TableName, Sheet, SheetIndex, ExcelTable, TemplateRow i State
TXLSCompiledSheetReportBand.Run stvara listove po zapisu koristeći NameColumn, NamePrefix i DeleteTemplateAfterRun; TXLSCompiledOverflowReportBand.Run stvara nastavne listove koristeći NamePrefix i DeleteTemplateAfterRun
Predlošci cijelih radnih knjiga
TXLSReportTemplateTarget i TXLSReportTemplateTargets biraju ćelije, komentare, hiperveze, oblike, zaglavlja i podnožja, nazive listova, definirana imena i svojstva dokumenta
TXLSCompiledReportTemplate.Compile prikuplja ciljeve i izraze, Analyze vraća adresirane TXLSReportIssues, preopterećenja metode Run primjenjuju vrijednosti, a WriteDiagnostics zapisuje probleme u radni list; TargetAreas i TargetCount opisuju kompiliranu površinu
TXLSReportIssueKind, TXLSReportIssue i TXLSReportIssues prepoznaju neispravan, nedostajući, nevažeći, nepoznati ili ciklički sadržaj zamjenskih oznaka s koordinatama cilja i ćelije
IXLSReportImageDataProviderV2.GetImage prima TXLSReportImageRequest sa stabilnim identitetom radnog lista, kompiliranim ciljem, nazivima trake i tablice, logičkim redcima i pokazivačem, prikazom trenutnog retka samo za čitanje, ćelijama direktiva i sidra, dimenzijama cilja i offsetima u EMU-u te IXLSReportImageCancellation-om
TXLSReportImageResult nosi TXLSReportImagePayload čiji Kind (TXLSReportImagePayloadKind) bira xripMissing, bajtove ili tok, uz životni vijek toka deklariran s TXLSReportImageStreamOwnership: tokovi xrisoBorrowed ostaju u vlasništvu pozivatelja i vraćaju svoju poziciju kada je seekable, dok se tokovi xrisoTransferred otpuštaju točno jednom; neobavezni SourceWidth, SourceHeight, SourceDpiX i SourceDpiY tvrde ili nadjačavaju fizičku geometriju izvora
xrifNatural koristi fizičku veličinu izvora, xrifContain skalira i centrira unutar ciljnog okvira, xrifCover puni okvir simetričnim izrezivanjem izvora, a xrifStretch ga puni bez čuvanja omjera stranica; geometrija PNG, JPEG, GIF, BMP, EMF i WMF čita se iz ograničenih zaglavlja bez dekodiranja piksela
IXLSReportIncludeResolver.Resolve pruža imenovane fragmente, a njegova zastavica Immutable dopušta sigurnu ponovnu upotrebu; TXLSReportIncludeLibrary pruža Add, Remove, Clear, Freeze, Resolve, Count i Immutable
IXLSReportImageProvider.TryGetImage vraća TXLSReportImageValue konfiguriran putem TXLSReportImageFit; TXLSReportMissingImagePolicy upravlja nedostajućim resursima, dok TXLSReportImageBinder.Apply, MissingPolicy i ClearDirectiveCell ažuriraju točne direktive slika
TXLSReportDynamicFormat i TXLSReportFormatEvent omogućuju pokretaču primjenu brojčanih formata, visina redaka i širina stupaca po cilju
Ponovno upotrebljivo izvršavanje
TXLSReportRunPhase, TXLSReportRunState, TXLSReportRunProgress i TXLSReportRunProgressEvent opisuju granice napretka i otkazivanja
TXLSCompiledReportRunner izlaže Run, RunToStream, RunToFile, RunToEncryptedFile i Cancel, uz ReportTemplate, State, Progress, OnProgress i OnFormat koji upravljaju ponovno upotrebljivim izvršavanjem; neuspjela validacija podiže EXLSReportData prije determinističkog zapisivanja
ErrorMode (tip TXLSReportErrorMode) po defaultu je xremStop; xremWriteAndContinue obrađuje samo izričite greške EXLSReportRecoverableData i rezultate DataError razrješivača, bilježi uređene nepromjenjive probleme u LastResult (an IXLSReportRunResult koji izlaže State, AppliedCount, IssueCount, indeksirane Issues te FailureClassName / FailureMessage fatalne greške) čije snimke TXLSReportRuntimeIssue izlažu svoju Category (a TXLSReportRuntimeIssueCategory: xrricDataAccess, xrricProvider ili xrricExpression) i izvještavaju TargetIndex, SheetName, Col te je li problem već WasWritten u izlaz, a završava kao xrrsCompletedWithErrors
TXLSReportRuntimeLimits.Defaults dopušta 100.000 zadržanih problema, 512 znakova po sanitiziranoj poruci i 16 MiB memorije problema; dodijelite pozitivan prilagođeni zapis RuntimeLimits prije izvođenja, a RuntimeDiagnosticsSheetName ostavite praznim osim ako je potreban jedan strukturirani dijagnostički radni list
Oporavljive vrijednosti i formule ćelija postaju literalni tekst [Report error CODE] message, sigurni ne-ćelijski ciljevi zadržavaju izvornu vrijednost, a neobavezni dijagnostički radni list označava te strukturirane probleme kao zapisane; greške naziva radnog lista i formule definiranog imena uvijek zaustavljaju jer mogu promijeniti strukturu radne knjige
Greške podataka deklarirane od razrješivača, dijeljenje izraza nulom i nevažeći regularni izrazi koriste stabilne kategorije davatelja ili izraza; bačene iznimke razrješivača i sve callback, otkazne, ograničenja resursa, rollback, serializacijske, sigurnosne i strukturne greške ostaju fatalne
RunToStream, RunToFile i RunToEncryptedFile pripremaju serializaciju unutar istog vijeka izvođenja i data-sesije, a zatim objavljuju jednom; bilo koja fatalna, otkazna, serializacijska, djelomična greška pisanja toka ili zamjene odredišta čuva potpuno prethodno odredište i otpušta privremenu pohranu prije povratka
Neprazan izlazni tok mora biti čitljiv, upisiv, proširiv i seekable da rollback može vratiti izvorne bajtove, veličinu i poziciju; snimke do 8 MiB ostaju u memoriji, a veće koriste upravljanu privremenu pohranu, dok uspješan commit ostavlja tok na poziciji nula
Nešifrirani izlaz koristi izvorni format generirane radne knjige, pa ODS predložak proizvodi ODS tok ili datoteku s potrebnim metapodacima paketa; šifrirani izlaz i dalje koristi šifrirani Office spremnik
ImageProvider čuva izvorni ugovor kompatibilnosti; ImageProviderV2, OnTransformImage, MaximumImageBytes, MissingImagePolicy i ClearImageDirectiveCell omogućuju pokretaču, generatoru, rasponnoj traci ili Excel-tabličnoj traci da izravno konzumiraju prekompilirane ciljeve {{#image Key}}; izostavljanjem oba davatelja te ćelije direktiva ostaju nepromijenjene
AutofitMode (tip TXLSReportAutofitMode) bira autofit cijelog lista (xramNone, xramRows, xramColumns ili xramBoth) primijenjen jednom nakon izvršavanja svih ciljeva, a AutofitAdjustment je dodatni faktor rezerve (1.0 = nema, 1.1 = 10% viši retci)
Životni ciklus generiranja i izvori predložaka
TXLSReportLifecyclePhase identificira granice čitanja predloška, generiranja radne knjige i generiranja radnog lista, dok TXLSReportLifecycleOutcome razlikuje entered, completed, canceled i failed povratne pozive
TXLSReportLifecycleContext opskrbljuje aktivnu radnu knjigu i radni list, stabilnim identitetom radnog lista, izvornim i trenutnim koordinatama, IXLSReportDataView samo za čitanje, brojem ciljeva i detaljima prve greške; svaki upisani before događaj prima upareni after događaj čak i kada je generiranje otkazano ili ne uspije
TXLSCompiledReportRunner.BeforeGenerateWorkbook, AfterGenerateWorkbook, BeforeGenerateSheet i AfterGenerateSheet promatraju zamrznuti skup izvornih radnih listova; strukturne promjene potaknute callbackom okidaju osvježavanje kompilacije bez dodavanja novostvorenih listova u trenutno izvođenje
TXLSReportRunPhase, TXLSReportRunState, TXLSReportRunProgress i TXLSReportRunProgressEvent opisuju granice napretka i otkazivanja
TXLSCompiledReportRunner izlaže Run, RunToStream, RunToFile i Cancel, pri čemu ReportTemplate, State, Progress, OnProgress i OnFormat upravljaju ponovno upotrebljivim izvršavanjem; neuspjela provjera podiže EXLSReportData prije determinističkog zapisivanja
Planiranje, provjera i migracija
TXLSReportPaginationPlanner pruža planove KeepTogether, SplitRows, MergeSimilar i BalanceColumns za fiksna podnožja i uravnotežen izlaz
TXLSReportTemplateChecker pruža Check, CheckBand i CheckTableBand; TXLSReportTemplateMigrator pruža MigrateText i MigrateWorkbook za podržane zastarjele oblike zamjenskih oznaka
Primjer
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;
Vidi također
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;
Delphi FeatureShowcase i C++Builder XlsxFeatureGallery sadrže potpune izvedive verzije koje provjere stanje completed-with-errors i broj problema prije otpuštanja pokretača