HotXLS-dokumentasjon

Kompilert rapporterings-API

lxReport-enheten kompilerer plassholdere og strukturelle rapportbånd én gang, og bruker deretter data eid av den som kaller, gjennom avgrensede markører uten å skanne genererte arbeidsbokobjekter på nytt

Tabell- og markørkontrakter

IXLSReportCursorMoveNext, RowIndex og Values eksponerer én fremoverrettet rad om gangen
IXLSReportTableName, ColumnCount, ColumnNames og CreateCursor definerer en gjenbrukbar tabellkilde
IXLSReportRandomAccessTableRowCount og todimensjonale Values legger til indeksert tilgang som brukes av koblinger og relasjonsindekser
IXLSReportTableProviderTryGetTable oppløser en navngitt tabell tregt
TXLSReportMemoryTableAddRow, ColumnIndexOf, CreateCursor, ColumnCount, ColumnNames og RowCount gir en eid in-memory-implementasjon
TXLSReportDataContextRegisterTable, AddProvider, TryGetTable, RequireTable, ClearLoadedTables og LoadedTableCount koordinerer ivrige og trege kilder; RegisterResolver, HasResolver, RemoveResolver, ClearResolvers og ResolverCount administrerer typede resolvere, og BeginRun tar øyeblikksbilder av tabeller og leverandører inn i en isolert per-kjørings-økt slik at separate kjøringer aldri deler leverandørresultater

Kontrollerte spørringsleverandører

IXLSReportQueryExecutor.ExecuteReadOnly holder spørringskjøringen vertseid og godtar bare definisjoner som er registrert av applikasjonskoden

TXLSReportQueryParameter, TXLSReportQueryParameters og TXLSReportQueryDefinition eksponerer Name, CommandText, TimeoutMS, ParameterCount, Parameters, SetParameter og ClearParameters

TXLSReportQueryProvider bruker RegisterQuery, RemoveQuery, Clear og TryGetTable, med Count, Definitions og MaximumTimeoutMS som eksponerer hvitelisten og tidsavbruddstaket

Datasessioner per kjøring

IXLSReportDataSession er den isolerte trege cachen bak én rapportkjøring: DeclareRequest registrerer en TXLSReportDataRequest (type TXLSReportDataRequestKind: xrdrkNamed eller xrdrkUser) hvis TXLSReportDataSource (type TXLSReportDataSourceKind: uspesifisert, celle, områdebånd, tabellbånd eller uttrykk) og TXLSReportDataParameter-liste beskriver kilden og verdiene dens, og hvis RunControl er vertens IXLSReportRunControl-avbrytingshåndtak; HasResolver tester en leverandørnøkkel, TryGetTable og RequireTable leser bufrede aliaser, TryResolveTable og RequireResolvedTable oppløser ved behov til en TXLSReportDataResolveResult (status TXLSReportDataResolveStatus: xrdrsUnhandled, xrdrsResolved, xrdrsNotFound eller xrdrsDataError), og TryGetState rapporterer en TXLSReportDataSessionState med lasting, oppløst, ikke funnet eller datafeil, mens CachedAliasCount og ResolvedAliasCount eksponerer øktens størrelse

IXLSReportDataView.TryGetValue slår opp én navngitt verdi uten å utløse unntak, som supplement til de indekserte aksessorene Count, Names og Values

Relasjoner og trege tabellkombinatorer

TXLSReportRowIndexes og TXLSReportRelationIndex beholder underordnede radnumre i bøtter med sammensatt nøkkel; bruk FindChildRows eller CreateChildCursor og inspiser BucketCount eller IndexedRowCount

TXLSReportAggregateKind, TXLSReportAggregate og TXLSReportJoinKind konfigurerer TXLSReportTableFactory, hvis radfiltre sammenligner gjennom TXLSReportFilterOperator (xrfoEqual, xrfoNotEqual, xrfoGreater, xrfoGreaterEqual, xrfoLess, xrfoLessEqual, xrfoContains, xrfoStartsWith, xrfoEndsWith)

AggregatdefinisjonerCountAggregate, MinAggregate og Aggregate
Projeksjon og reduksjonTop, Columns, NRows og Min
KomposisjonUnion, Join og Split returnerer trege visninger uten å kopiere komplette mellomraddata

Navngitte og eksplisitte områdebånd

TXLSReportBandKind velger rad-, kolonne- eller krysstabellutvidelse, og TXLSReportBandState rapporterer livssyklustilstanden klar, kjører, fullført, fullført med feil, avbrutt eller feilet

TXLSCompiledReportBand godtar et navngitt definert navn med eksakt omfang eller CreateForRange, og utvider deretter gjennom Run-overbelastningene; DefinedName, ScopeSheetIndex, Kind, Sheet, SheetIndex, FirstRow, FirstCol, LastRow, LastCol, TargetCount og State eksponerer den kompilerte planen

EmptyBandPolicy (type TXLSEmptyBandPolicy) styrer hva båndet gjør med malradene sine når datasettet er tomt — xreKeepTemplate lar radene være i fred, xreClearTemplate tømmer båndcellene inkludert plassholdere, og xreDeleteTemplate sletter malradene — og DeleteLastRow fjerner de siste BandHeight radene av den utvidede blokken etter at kopiene er på plass, slik at etterfølgende separatorrader i X-området kollapser

FixedBand gjør at radbånd overskriver radene under malen i stedet for å sette inn nye, slik at omgivende innhold beholder en fast posisjon

TXLSCompiledTableReportBand.Run utvider én Excel-tabell-radmal samtidig som tabellmetadataene bevares; inspiser TableName, Sheet, SheetIndex, ExcelTable, TemplateRow og State, og konfigurer de samme V2-bildeegenskapene som områdebåndene eksponerer

Område- og Excel-tabellbånd deler ErrorMode, StrictDataAccess, RuntimeLimits og uforanderlige LastResult-øyeblikksbilder; xremWriteAndContinue skriver bare eksplisitte gjenopprettbare cellefeil som litteral diagnostikk, registrerer kilderaden BandInputRow og faktiske utdatokoordinater, og fortsetter med senere mål og rader, mens strukturelle feil, avbrytelser, ressursgrenser, callbacks og rollback-feil forblir fatale

TXLSCompiledSheetReportBand.Run oppretter ark per post ved hjelp av NameColumn, NamePrefix og DeleteTemplateAfterRun; TXLSCompiledOverflowReportBand.Run oppretter fortsettelsesark ved hjelp av NamePrefix og DeleteTemplateAfterRun

Hele arbeidsbokmaler

TXLSReportTemplateTarget og TXLSReportTemplateTargets velger celler, kommentarer, hyperkoblinger, figurer, topp- og bunntekster, arknavn, definerte navn og dokumentegenskaper

TXLSCompiledReportTemplate.Compile fanger mål og uttrykk, Analyze returnerer adresserte TXLSReportIssues, Run-overbelastningene bruker verdier, og WriteDiagnostics skriver problemer til et regneark; TargetAreas, TargetCount og UserTableCount beskriver den kompilerte flaten og de registrerte brukertabellene

ProcessStructuralDirectives (standard True) gjør at malens Run utfører de strukturelle direktivene {{#delete}} og {{#format}} etter at verdimålene er brukt — TXLSReportDirectiveProcessor bak den tolker områdene, bruker dem og rapporterer hvor mange den håndterte gjennom AppliedCount — og CreateEncrypted åpner en kryptert mal med passordet sitt og kompilerer den, samtidig som arbeidsboken holdes tilgjengelig via Workbook-egenskapen

TXLSReportIssueKind, TXLSReportIssue og TXLSReportIssues identifiserer feilformet, manglende, ugyldig, ukjent eller syklisk plassholderinnhold med mål- og cellekoordinater

Inkluderinger, bilder og formatering

IXLSReportIncludeResolver.Resolve leverer navngitte fragmenter, og flagget Immutable tillater trygg gjenbruk; TXLSReportIncludeLibrary gir Add, Remove, Clear, Freeze, Resolve, Count og Immutable

IXLSReportImageProvider.TryGetImage returnerer en TXLSReportImageValue konfigurert av TXLSReportImageFit; TXLSReportMissingImagePolicy styrer manglende ressurser, mens TXLSReportImageBinder.Apply, ApplyTarget, MissingPolicy og ClearDirectiveCell oppdaterer eksakte bildedirektiver

TXLSReportImageBinder.ApplyTargetV2 binder én direktivcelle gjennom V2-leverandørkontrakten og videresender en TXLSReportTransformImageEvent som kan omskrive den løste nyttelasten før den lander; den løste plassholderen er selv en TXLSReportEvaluatedTarget hvis TXLSReportEvaluatedTargetKind skiller mellom xretNone, xretText, xretValue og xretFormula; IXLSReportImageCancellation.IsCancellationRequested lar langvarige leverandører observere en kooperativ avbryting

IXLSReportImageDataProviderV2.GetImage mottar en TXLSReportImageRequest med stabil regnearkidentitet, kompilert mål, bånd- og tabellnavn, logiske og markørbaserte rader, en skrivebeskyttet visning av gjeldende rad, direktiv- og ankerceller, måldimensjoner og forskyvninger i EMU, samt IXLSReportImageCancellation

TXLSReportImageResult bærer en TXLSReportImagePayload hvis Kind (TXLSReportImagePayloadKind) velger xripMissing, bytes eller en strøm, med strømmens levetid deklarert av TXLSReportImageStreamOwnership: xrisoBorrowed-strømmer forblir eid av den som kaller, og gjenoppretter posisjonen sin når de kan søkes i, mens xrisoTransferred-strømmer frigjøres nøyaktig én gang; valgfrie SourceWidth, SourceHeight, SourceDpiX og SourceDpiY bekrefter eller overstyrer kildens fysiske geometri

xrifNatural bruker kildens fysiske størrelse, xrifContain skalerer og sentrerer innenfor målramen, xrifCover fyller rammen med symmetrisk beskjæring av kilden, og xrifStretch fyller den uten å bevare sideforholdet; PNG-, JPEG-, GIF-, BMP-, EMF- og WMF-geometri leses fra avgrensede headere uten å dekode piksler

OnTransformImage kjører etter at leverandørdataene er avbildet og før regnearket endres; MaximumImageBytes har standardverdien 64 MiB, og nyttelastsignaturer, geometriheadere, dimensjons- og DPI-par, grenser for rasterside og piksler, ankere og rutenettokoordinater valideres før binding

TXLSXImage.OffsetXEMU og OffsetYEMU beholder et bildeposisjon inne i cellen eller det absolutte ankeret gjennom XLSX- og ODS-roundtrips

TXLSReportDynamicFormat og TXLSReportFormatEvent lar en kjøring bruke tallformater, radhøyder og kolonnebredder per mål

Gjenbrukbar utførelse

TXLSReportRunPhase, TXLSReportRunState, TXLSReportRunProgress og TXLSReportRunProgressEvent beskriver fremdrift og avbrytingsgrenser

TXLSCompiledReportRunner eksponerer Run, RunToStream, RunToFile, RunToEncryptedFile og Cancel, med ReportTemplate, State, Progress, OnProgress og OnFormat som styrer gjenbrukbar utførelse; mislykket validering utløser EXLSReportData før deterministiske skrivinger

ErrorMode (type TXLSReportErrorMode) har standardverdien xremStop; xremWriteAndContinue håndterer bare eksplisitte EXLSReportRecoverableData-feil og resolverens DataError-resultater, registrerer ordnede uforanderlige problemer i LastResult (en IXLSReportRunResult som eksponerer State, AppliedCount, IssueCount, indekserte Issues og FailureClassName / FailureMessage for en fatal feil) hvis TXLSReportRuntimeIssue-øyeblikksbilder eksponerer sin Category (en TXLSReportRuntimeIssueCategory: xrricDataAccess, xrricProvider eller xrricExpression) og rapporterer TargetIndex, SheetName, Col og om problemet allerede var WasWritten til utdata, og avslutter som xrrsCompletedWithErrors

TXLSReportRuntimeLimits.Defaults tillater 100 000 beholdte problemer, 512 tegn per sanitert melding og 16 MiB problemminne; tilordne en positiv egendefinert RuntimeLimits-post før en kjøring, og la RuntimeDiagnosticsSheetName være tom med mindre ett strukturert diagnostikkregneark kreves

Gjenopprettbare celleverdier og formler blir til litteral tekst [Report error CODE] message, trygge mål utenfor celler beholder opprinnelig verdi, og et valgfritt diagnostikkregneark merker de strukturerte problemene som skrevet; feil i arknavn og formler for definerte navn stopper alltid, fordi de kan endre arbeidsbokens struktur

Datafeil deklarert av resolvere, divisjon med null i uttrykk og ugyldige regulære uttrykk bruker stabile leverandør- eller uttrykkategorier; kastede resolverunntak og alle callback-, avbrytings-, ressursgrense-, rollback-, serialiserings-, sikkerhets- og strukturelle feil forblir fatale

RunToStream, RunToFile og RunToEncryptedFile iscenesetter serialiseringen inne i samme levetid for kjøring og datasession, og publiserer deretter én gang; enhver fatal, avbrutt, serialiserings-, delvis strømskrive- eller erstatningsfeil på målstedet bevarer det fullstendige tidligere målet og frigjør midlertidig lagring før retur

En ikke-tom utdatastrøm må kunne leses, skrives, endre størrelse og søkes i, slik at rollback kan gjenopprette opprinnelige bytes, størrelse og posisjon; øyeblikksbilder opp til 8 MiB beholdes i minnet, og større øyeblikksbilder bruker administrert midlertidig lagring, mens en vellykket commit etterlater strømmen posisjonert på null

Ukryptert utdata bruker den genererte arbeidsbokens kildeformat, så en ODS-mal gir en ODS-strøm eller -fil med den nødvendige pakkemetadataen; kryptert utdata fortsetter å bruke den krypterte Office-beholderen

ImageProvider bevarer den opprinnelige kompatibilitetskontrakten; ImageProviderV2, OnTransformImage, MaximumImageBytes, MissingImagePolicy og ClearImageDirectiveCell lar en kjøring, generator, områdebånd eller Excel-tabellbånd konsumere forhåndskompilerte {{#image Key}}-mål direkte; utelates begge leverandørene, forblir disse direktivcellene uendret

AutofitMode (type TXLSReportAutofitMode) velger autotilpasning av hele arket (xramNone, xramRows, xramColumns eller xramBoth) som kjøres én gang etter at alle mål er kjørt, og AutofitAdjustment er en ekstra marginalfaktor (1.0 = ingen, 1.1 = 10 % høyere rader)

Generasjonslivssyklus og malkilder

TXLSReportLifecyclePhase identifiserer grensene for mallesing, arbeidsbokgenerering og regnearkgenerering, mens TXLSReportLifecycleOutcome skiller mellom callbacks som entres, fullføres, avbrytes og feiler

TXLSReportLifecycleContext gir den aktive arbeidsboken og regnearket, stabil regnearkidentitet, opprinnelige og gjeldende koordinater, en skrivebeskyttet IXLSReportDataView, antall mål og detaljer om den første feilen; hver entered before-hendelse får en tilhørende after-hendelse, selv når genereringen avbrytes eller feiler

TXLSCompiledReportRunner.BeforeGenerateWorkbook, AfterGenerateWorkbook, BeforeGenerateSheet og AfterGenerateSheet observerer et frossent sett med opprinnelige regneark; callback-drevne strukturendringer utløser oppfrisking av kompileringen uten å legge nyopprettede ark til den gjeldende kjøringen

TXLSReportGenerator godtar en arbeidsbok, filnavn, strøm eid av den som kaller, eller kryptert fil, og legger BeforeReadTemplate og AfterReadTemplate til genereringshendelsene; TXLSReportModificationMode velger kompatibel mutasjon på stedet eller isolert atomklon-generering. Skrivebeskyttet SourceKind (type TXLSReportTemplateSourceKind: xrtsWorkbook, xrtsFile, xrtsStream eller xrtsEncryptedFile) og TemplateWorkbook rapporterer den konfigurerte malkilden, mens ModificationMode og IncludeResolver kan settes før en kjøring

Fil- og strøm-maler bruker som standard xrmAtomicClone; søkbare inngangsstrømmer gjenoppretter sin opprinnelige posisjon, kun fremoverrettede strømmer konsumeres i avgrensede blokker, kallerstrømmer forblir åpne, og utdatastrømmer eller -filer erstattes først etter vellykket fullføring

Planlegging, kontroll og migrering

TXLSReportPaginationPlanner gir planene KeepTogether, SplitRows, MergeSimilar og BalanceColumns for faste bunntekster og balansert utdata

TXLSReportTemplateChecker gir Check, CheckBand og CheckTableBand; TXLSReportTemplateMigrator gir MigrateText og MigrateWorkbook for støttede eldre plassholderformer

Delphi-eksempel

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-eksempel

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-eksemplet FeatureShowcase og C++Builder-eksemplet XlsxFeatureGallery inneholder fullstendige kjørbare versjoner som verifiserer completed-with-errors-tilstanden og problemtallet før kjøringen frigis

Se også