Käännetty raportointi-API
The lxReport -yksikkö kääntää paikkamerkit ja rakenteelliset raporttinauhat kerran ja soveltaa sitten soittajan omistamaa dataa rajattujen kursorien kautta skannaamatta luotuja työkirjaobjekteja uudelleen
Taulukko- ja kursorisopimukset
| IXLSReportCursor | MoveNext, RowIndexja Values paljastavat kerrallaan yhden eteenpäin suuntautuvan rivin |
| IXLSReportTable | Name, ColumnCount, ColumnNamesja CreateCursor määrittävät uudelleenkäytettävän taulukkomuotoisen lähteen |
| IXLSReportRandomAccessTable | RowCount ja kaksiulotteinen Values lisäävät indeksoidun pääsyn, jota liitokset ja relaatiot käyttävät |
| IXLSReportTableProvider | TryGetTable ratkaisee nimetyn taulukon hitaasti |
| TXLSReportMemoryTable | AddRow, ColumnIndexOf, CreateCursor, ColumnCount, ColumnNamesja RowCount tarjoavat omistetun muistissa olevan toteutuksen |
| TXLSReportDataContext | RegisterTable, AddProvider, TryGetTable, RequireTable, ClearLoadedTablesja LoadedTableCount koordinoivat ennalta ladattuja ja hitaasti ladattavia lähteitä; RegisterResolver, HasResolver, RemoveResolver, ClearResolversja ResolverCount hallinnoivat tyypitettyjä resolvereita, ja BeginRun ottaa taulukoista ja tarjoajista tilannekuvan eristettyyn suoritusta kohtainen istuntoon, joten erilliset suoritukset eivät koskaan jaa tarjoajien tuloksia |
Hallitut kyselytarjoajat
IXLSReportQueryExecutor.ExecuteReadOnly pitää kyselyn suorituksen isäntäsovelluksen omistuksessa ja hyväksyy vain sovelluskoodin rekisteröimiä määritelmiä
TXLSReportQueryParameter, TXLSReportQueryParametersja TXLSReportQueryDefinition paljastavat Name, CommandText, TimeoutMS, ParameterCount, Parameters, SetParameterja ClearParameters
TXLSReportQueryProvider käyttää RegisterQuery, RemoveQuery, Clearja TryGetTable-metodeja, ja Count, Definitionsja MaximumTimeoutMS paljastavat sallittujen kyselyiden listan ja aikakatkaisun ylärajan
Suoritusta kohtaiset data-istunnot
IXLSReportDataSession on yhden raportin suorituksen taustalla oleva eristetty laiska välimuisti: DeclareRequest rekisteröi TXLSReportDataRequest in (tyyppi TXLSReportDataRequestKind: xrdrkNamed tai xrdrkUser), jonka TXLSReportDataSource (tyyppi TXLSReportDataSourceKind: määrittelemätön, solu, aluenauba, taulukkonauba tai lauseke) ja TXLSReportDataParameter -luettelo kuvaavat lähteen ja sen arvot, ja jonka RunControl on isännän IXLSReportRunControl -peruutuskahva; HasResolver testaa tarjoaja-avaimen, TryGetTable ja RequireTable lukevat välimuistissa olevia aliaksia, TryResolveTable ja RequireResolvedTable ratkaisevat tarvittaessa TXLSReportDataResolveResult iksi (tila TXLSReportDataResolveStatus: xrdrsUnhandled, xrdrsResolved, xrdrsNotFoundtai xrdrsDataError), ja TryGetState raportoi TXLSReportDataSessionState in (lataus, ratkaistu, ei löytynyt tai datavirhe), kun taas CachedAliasCount ja ResolvedAliasCount paljastavat istunnon koon
IXLSReportDataView.TryGetValue hakee yhden nimetyn arvon nostamatta poikkeusta, täydentäen indeksoituja Count-, Names- ja Values -käsittelijöitä
Relaatiot ja hitaasti ladattavat taulukko-yhdistäjät
TXLSReportRowIndexes ja TXLSReportRelationIndex säilyttävät lapsirivien numerot yhdistelmäavainämpäreissä; käytä FindChildRows tai CreateChildCursor -metodia ja tarkastele BucketCount tai IndexedRowCount
TXLSReportAggregateKind, TXLSReportAggregateja TXLSReportJoinKind määrittävät TXLSReportTableFactory-luokan, jonka rivisuodattimet vertailevat TXLSReportFilterOperator illa (xrfoEqual, xrfoNotEqual, xrfoGreater, xrfoGreaterEqual, xrfoLess, xrfoLessEqual, xrfoContains, xrfoStartsWith, xrfoEndsWith)
| Aggregate definitions | CountAggregate, MinAggregateja Aggregate |
| Projection and reduction | Top, Columns, NRowsja Min |
| Composition | Union, Joinja Split palauttavat hitaasti ladattavia näkymiä kopioimatta täydellisiä väliaikaisten rivien kuormia |
Nimettyjen ja eksplisiittisten alueiden nauhat
TXLSReportBandKind valitsee rivi-, sarake- tai ristiintaulukkolaajennuksen, ja TXLSReportBandState raportoi valmiin, käynnissä olevan, valmistuneen, virheiden kanssa valmistuneen, perutun tai epäonnistuneen elinkaaritilan
TXLSCompiledReportBand hyväksyy tarkkarajaisen määritellyn nimen tai CreateForRange-metodin ja laajenee sitten Run -ylikuormitusten kautta; DefinedName, ScopeSheetIndex, Kind, Sheet, SheetIndex, FirstRow, FirstCol, LastRow, LastCol, TargetCountja State paljastavat käännetyt suunnitelman
EmptyBandPolicy (tyyppi TXLSEmptyBandPolicy) ohjaa, mitä nauha tekee malliriveillään, kun datajoukko on tyhjä — xreKeepTemplate jättää rivit koskemattomiksi, xreClearTemplate tyhjentää nauhan solut mukaan lukien paikkamerkit ja xreDeleteTemplate poistaa mallirivit — ja DeleteLastRow poistaa laajennetun lohkon viimeiset BandHeight riviä sen kopioiden ilmestymisen jälkeen, jotta lopulliset X-alueen erotinrivit romahtavat
FixedBand saa rivinauhat ylikirjoittamaan mallirivien alapuolella olevat rivit uusien lisäämisen sijaan, mikä pitää ympäröivän sisällön kiinteässä sijainnissa
TXLSCompiledTableReportBand.Run laajentaa yhden Excel-taulukon datamallirivin säilyttäen taulukon metatiedot; tarkastele TableName, Sheet, SheetIndex, ExcelTable, TemplateRowja State-arvoja ja määritä samat V2-kuvan ominaisuudet, jotka aluenaubatkin paljastavat
Alue- ja Excel-taulukkonauhat jakavat ErrorModein, StrictDataAccessin, RuntimeLimitsin ja muuttumattomat LastResult -tilannekuvat; xremWriteAndContinue kirjoittaa vain eksplisiittiset palautuvat soluvirheet literaaleina diagnostiikkateksteinä, kirjaa lähde BandInputRow in ja todelliset tulostuskoordinaatit ja jatkaa myöhempiä kohteita ja rivejä, kun taas rakenteelliset, peruutus-, resurssiraja-, callback- ja rollback-virheet jäävät kohtalokkaiksi
TXLSCompiledSheetReportBand.Run luo tietuekohtaisia laskentataulukoita käyttäen NameColumn, NamePrefixja DeleteTemplateAfterRun-arvoja; TXLSCompiledOverflowReportBand.Run luo jatkolaskentataulukoita käyttäen NamePrefix ja DeleteTemplateAfterRun
Kokonaisten työkirjojen mallit
TXLSReportTemplateTarget ja TXLSReportTemplateTargets valitsevat solut, kommentit, hyperlinkit, muodot, ylä- ja alatunnisteet, laskentataulukoiden nimet, määritellyt nimet ja dokumentin ominaisuudet
TXLSCompiledReportTemplate.Compile tallentaa kohteet ja lausekkeet, Analyze palauttaa osoitettuja TXLSReportIssues-virheitä, Run -ylikuormitukset soveltavat arvoja ja WriteDiagnostics kirjoittaa virheet laskentataulukkoon; TargetAreas, TargetCountja UserTableCount kuvaavat käännetyt pinnan ja rekisteröidyt käyttäjätaulukot
ProcessStructuralDirectives (oletus True) saa mallin Run in suorittamaan rakenteelliset {{#delete}} - ja {{#format}} -direktiivit arvokohteiden soveltamisen jälkeen — sen taustalla oleva TXLSReportDirectiveProcessor jäsentää alueet, soveltaa ne ja raportoi käsiteltyjen määrän AppliedCount in kautta — ja CreateEncrypted avaa salatun mallin salasanallaan ja kääntää sen pitäen työkirjan tavoitettavissa Workbook -ominaisuuden kautta
TXLSReportIssueKind, TXLSReportIssueja TXLSReportIssues tunnistavat virheellisen, puuttuvan, kelvottoman, tuntemattoman tai syklisen paikkamerkkisisällön kohde- ja solukoordinaatteineen
Sisällytykset, kuvat ja muotoilu
IXLSReportIncludeResolver.Resolve toimittaa nimettyjä fragmentteja ja sen Immutable -lippu sallii turvallisen uudelleenkäytön; TXLSReportIncludeLibrary tarjoaa Add, Remove, Clear, Freeze, Resolve, Countja Immutable
IXLSReportImageProvider.TryGetImage palauttaa TXLSReportImageValue -arvon, jonka TXLSReportImageFitmäärittää; TXLSReportMissingImagePolicy ohjaa puuttuvia resursseja, kun taas TXLSReportImageBinder.Apply, ApplyTarget, MissingPolicyja ClearDirectiveCell päivittävät tarkat kuvadirektiivit
TXLSReportImageBinder.ApplyTargetV2 sitoo yhden direktiivisolun V2-tarjoajasopimuksen kautta ja välittää TXLSReportTransformImageEvent -tapahtuman, joka voi kirjoittaa ratkaistun payloadin uudelleen ennen sen laskeutumista; itse ratkaistu paikkamerkki on TXLSReportEvaluatedTarget , jonka TXLSReportEvaluatedTargetKind erottaa xretNonein, xretTextin, xretValuein ja xretFormulain; IXLSReportImageCancellation.IsCancellationRequested antaa pitkään pyörivien tarjoajien havaita yhteistyöperuutuksen
IXLSReportImageDataProviderV2.GetImage vastaanottaa TXLSReportImageRequest in, jossa on vakaa työarkki-identiteetti, käännetty kohde, nauhojen ja taulukoiden nimet, loogiset ja kursoririvit, vain luku -nykyrivariview, direktiivi- ja ankkurisolut, kohteen mitat ja siirtymät EMUina sekä IXLSReportImageCancellation
TXLSReportImageResult kantaa TXLSReportImagePayload ia, jonka Kind (TXLSReportImagePayloadKind) valitsee xripMissingin, tavut tai virran, ja virran elinkaaren julistaa TXLSReportImageStreamOwnership: xrisoBorrowed -virrat jäävät soittajan omistukseen ja palauttavat sijaintinsa, jos ne ovat haettavissa, kun taas xrisoTransferred -virrat vapautetaan täsmälleen kerran; valinnaiset SourceWidth, SourceHeight, SourceDpiXja SourceDpiY vahvistavat tai ohittavat fyysisen lähdegeometrian
xrifNatural käyttää lähteen fyysistä kokoa, xrifContain skaalaa ja keskittää kohderuutuun, xrifCover täyttää ruudun symmetrisellä lähteen rajauksella ja xrifStretch täyttää sen säilyttämättä kuvasuhdetta; PNG-, JPEG-, GIF-, BMP-, EMF- ja WMF-geometria luetaan rajatuista otsikoista ilman pikselien dekoodausta
OnTransformImage suoritetaan sen jälkeen, kun tarjoajadata on otettu tilannekuvana, ja ennen työarkin muokkausta; MaximumImageBytes on oletuksena 64 MiB, ja payloadin allekirjoitukset, geometriaotsikot, mitta- ja DPI-parit, rasterin sivu- ja pikselirajat, ankkurit ja ruudukon koordinaatit validoidaan ennen sitomista
TXLSXImage.OffsetXEMU ja OffsetYEMU säilyttävät kuvan sijainnin solunsa tai absoluuttisen ankkurinsa sisällä XLSX- ja ODS-roundtripeissa
TXLSReportDynamicFormat ja TXLSReportFormatEvent antavat suorittajan soveltaa numeromuotoja, rivikorkeuksia ja sarakeleveyksiä kohdekohtaisesti
Uudelleenkäytettävä suoritus
TXLSReportRunPhase, TXLSReportRunState, TXLSReportRunProgressja TXLSReportRunProgressEvent kuvaavat edistymisen ja peruutuksen rajat
TXLSCompiledReportRunner paljastaa Run, RunToStream, RunToFile, RunToEncryptedFileja Cancel-metodit, ja ReportTemplate, State, Progress, OnProgressja OnFormat ohjaavat uudelleenkäytettävää suoritusta; epäonnistunut validointi nostaa EXLSReportData -poikkeuksen ennen deterministisiä kirjoituksia
ErrorMode (tyyppi TXLSReportErrorMode) on oletuksena xremStop; xremWriteAndContinue käsittelee vain eksplisiittiset EXLSReportRecoverableData -virheet ja resolverien DataError -tulokset, kirjaa järjestyksessä olevia muuttumattomia virheitä LastResult een ( IXLSReportRunResult , joka paljastaa Statein, AppliedCountin, IssueCountin, indeksoidut Issuesit ja kohtalokkaan virheen FailureClassName / FailureMessage in), joiden TXLSReportRuntimeIssue -tilannekuvat paljastavat Category nsa ( TXLSReportRuntimeIssueCategory: xrricDataAccess, xrricProvidertai xrricExpression) ja raportoivat TargetIndexin, SheetNamein, Colin ja sen, oliko virhe jo kirjoitettu ( WasWritten ) tulokseen, ja suoritus päättyy tilaan xrrsCompletedWithErrors
TXLSReportRuntimeLimits.Defaults sallii 100 000 säilytettyä virhettä, 512 merkkiä per puhdistettu viesti ja 16 MiB virhemuistia; aseta positiivinen oma RuntimeLimits -tietue ennen suoritusta ja jätä RuntimeDiagnosticsSheetName tyhjäksi, ellei yhtä jäsenneltyä diagnostiikkataulukkoa tarvita
Palautuvat soluarvot ja kaavat muuttuvat literaaliksi [Report error CODE] message -tekstiksi, turvalliset ei-solukohteet säilyttävät alkuperäisen arvonsa, ja valinnainen diagnostiikkataulukko merkitsee nämä jäsennellyt virheet kirjoitetuiksi; taulukoiden nimien ja määriteltyjen nimien kaavavirheet pysäyttävät aina, koska ne voivat muuttaa työkirjan rakennetta
Resolverien ilmoittamat datavirheet, lausekkeiden nollalla jakaminen ja kelvottomat säännölliset lausekkeet käyttävät vakaita tarjoaja- tai lausekekategorioita; resolverien heittämät poikkeukset sekä kaikki callback-, peruutus-, resurssiraja-, rollback-, serialisointi-, turvallisuus- ja rakennusvirheet jäävät kohtalokkaiksi
RunToStream, RunToFileja RunToEncryptedFile valmistelevat serialisoinnin saman suorituksen ja data-istunnon elinkaaren sisällä ja julkaisevat sen kerran; mikä tahansa kohtalokas, peruttu, serialisointi-, osittainen virtakirjoitus- tai kohteen korvausvirhe säilyttää täyden aiemman kohteen ja vapauttaa väliaikaisen tallennuksen ennen paluuta
Ei-tyhjän tulostusvirran on oltava luettava, kirjoitettava, kokoa muuttava ja siirrettävä (seekable), jotta rollback voi palauttaa alkuperäiset tavut, koon ja sijainnin; enintään 8 MiB:n tilannekuvat pysyvät muistissa ja suuremmat käyttävät hallittua väliaikaistallennusta, ja onnistunut commit jättää virran sijaintiin nolla
Salauttamaton tuloste käyttää generoidun työkirjan lähdemuotoa, joten ODS-malli tuottaa ODS-virran tai -tiedoston vaadituine pakkausmetatietoineen; salattu tuloste käyttää edelleen salattua Office-konttia
ImageProvider säilyttää alkuperäisen yhteensopivuussopimuksen; ImageProviderV2, OnTransformImage, MaximumImageBytes, MissingImagePolicyja ClearImageDirectiveCell antavat suorittajan, generaattorin, aluenauban tai Excel-taulukkonauban käyttää suoraan esikäännettyjä {{#image Key}} -kohteita; jättämällä molemmat tarjoajat pois nämä direktiivisolut jäävät ennalleen
AutofitMode (tyyppi TXLSReportAutofitMode) valitsee koko taulukon autofitin (xramNone, xramRows, xramColumnstai xramBoth), joka suoritetaan kerran kaikkien kohteiden jälkeen, ja AutofitAdjustment on lisävarakerroin (1.0 = ei mitään, 1.1 = 10 % korkeammat rivit)
Generoinnin elinkaari ja mallin lähteet
TXLSReportLifecyclePhase tunnistaa mallin luku-, työkirjagenerointi- ja laskentataulukogenerointirajat, kun taas TXLSReportLifecycleOutcome erottaa saapuneet, valmistuneet, perutut ja epäonnistuneet callbackit
TXLSReportLifecycleContext toimittaa aktiivisen työkirjan ja laskentataulukon, vakaan työarkki-identiteetin, alkuperäiset ja nykyiset koordinaatit, vain luku - IXLSReportDataViewin, kohteiden määrän ja ensimmäisen virheen tiedot; jokainen saapunut before-tapahtuma saa paritetun after-tapahtuman, vaikka generointi peruttaisiin tai se epäonnistuisi
TXLSCompiledReportRunner.BeforeGenerateWorkbook, AfterGenerateWorkbook, BeforeGenerateSheetja AfterGenerateSheet tarkastelevat jäädytettyä joukkoa alkuperäisiä laskentataulukoita; callbackeilla tehdyt rakennemuutokset käynnistävät käännöksen päivityksen lisäämättä uusia laskentataulukoita nykyiseen suoritukseen
TXLSReportGenerator hyväksyy työkirjan, tiedostonimen, soittajan omistaman virran tai salatun tiedoston ja lisää BeforeReadTemplate in ja AfterReadTemplate in generointitapahtumiin; TXLSReportModificationMode valitsee yhteensopivan paikallisen muokkauksen tai eristetyn atomisen kloonigeneroinnin. Vain luku - SourceKind (tyyppi TXLSReportTemplateSourceKind: xrtsWorkbook, xrtsFile, xrtsStreamtai xrtsEncryptedFile) ja TemplateWorkbook raportoivat määritetyn mallin lähteen, kun taas ModificationMode ja IncludeResolver ovat asetettavissa ennen suoritusta
Tiedosto- ja virtamallit käyttävät oletuksena xrmAtomicCloneia; haettavat syötevirrat palauttavat alkuperäisen sijaintinsa, vain eteenpäin toimivat virrat kulutetaan rajatuissa lohkoissa, soittajan virrat pysyvät auki, ja tulostusvirrat tai -tiedostot korvataan vain onnistuneen valmistumisen jälkeen
Suunnittelu, tarkistus ja siirto
TXLSReportPaginationPlanner tarjoaa KeepTogether, SplitRows, MergeSimilarja BalanceColumns -suunnitelmat kiinteille alatunnisteille ja tasapainotetulle tulosteelle
TXLSReportTemplateChecker tarjoaa Check, CheckBandja CheckTableBand-metodit; TXLSReportTemplateMigrator tarjoaa MigrateText ja MigrateWorkbook -metodit tuetuille vanhoille paikkamerkkimuodoille
Delphi-esimerkki
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-esimerkki
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;
Delphin FeatureShowcase ja C++Builderin XlsxFeatureGallery sisältävät täydelliset ajettavat versiot, jotka varmistavat completed-with-errors -tilan ja virheiden määrän ennen suorittajan vapauttamista