HotXLS dokumentacija

Sukompiliuotų ataskaitų API

lxReport modulis vieną kartą sukompiliuoja vietos rezervavimo žymes ir struktūrines ataskaitų juostas, tada pritaiko skambintojo valdomus duomenis per apribotus žymeklius, neskaitydamas iš naujo sugeneruotų darbo knygos objektų

Lentelių ir žymeklių sutartys

IXLSReportCursorMoveNext, RowIndex ir Values atskleidžia po vieną tik pirmyn veikiančią eilutę
IXLSReportTableName, ColumnCount, ColumnNames ir CreateCursor apibrėžia daugkartinio naudojimo lentelės šaltinį
IXLSReportRandomAccessTableRowCount ir dvimatis Values prideda indeksuotą prieigą, naudojamą jungimams ir ryšių indeksams
IXLSReportTableProviderTryGetTable pavadintą lentelę išsprendžia vėluojančiai
TXLSReportMemoryTableAddRow, ColumnIndexOf, CreateCursor, ColumnCount, ColumnNames ir RowCount pateikia valdomą atmintyje esančią implementaciją
TXLSReportDataContextRegisterTable, AddProvider, TryGetTable, RequireTable, ClearLoadedTables ir LoadedTableCount koordinuoja neatidėliotus ir vėluojančius šaltinius

Valdomi užklausų teikėjai

IXLSReportQueryExecutor.ExecuteReadOnly palieka užklausų vykdymą šeimininko valdomą ir priima tik programos kodo užregistruotus apibrėžimus

TXLSReportQueryParameter, TXLSReportQueryParameters ir TXLSReportQueryDefinition atskleidžia Name, CommandText, TimeoutMS, ParameterCount, Parameters, SetParameter ir ClearParameters

TXLSReportQueryProvider naudoja RegisterQuery, RemoveQuery, Clear ir TryGetTable, o Count, Definitions ir MaximumTimeoutMS atskleidžia baltąjį sąrašą ir laukimo viršutinę ribą

Ryšiai ir vėluojančių lentelių kombinatoriai

IXLSReportDataSession — izoliuota vieno ataskaitos paleidimo vėlinamoji talpykla: DeclareRequest registruoja TXLSReportDataRequest (tipas TXLSReportDataRequestKind: xrdrkNamed arba xrdrkUser), kurio TXLSReportDataSource (tipas TXLSReportDataSourceKind: nenurodyta, langelis, diapazono juosta, lentelės juosta arba išraiška) ir TXLSReportDataParameter sąrašas aprašo šaltinį bei jo reikšmes, o RunControl — svarelio IXLSReportRunControl atšaukimo rankena; HasResolver patikrina teikėjo raktą, TryGetTable ir RequireTable skaito talpykloje esančius sinonimus, TryResolveTable ir RequireResolvedTable pareikalavus išsprendžia į TXLSReportDataResolveResult (būsena TXLSReportDataResolveStatus: xrdrsUnhandled, xrdrsResolved, xrdrsNotFound arba xrdrsDataError), TryGetState praneša TXLSReportDataSessionState — įkeliama, išspręsta, nerasta ar duomenų klaida, o CachedAliasCount ir ResolvedAliasCount atskleidžia seanso dydį

IXLSReportDataView.TryGetValue randa vieną pavadintą reikšmę nekeldamas išimties ir papildo indeksuotus Count, Names bei Values prieigos metodus

Santykiai ir vėlinami lentelių kombinatoriai

TXLSReportRowIndexes ir TXLSReportRelationIndex išsaugo antrinių eilučių numerius sudėtinių raktų talpyklose; naudokite FindChildRows ar CreateChildCursor ir tikrinkite BucketCount ar IndexedRowCount

TXLSReportAggregateKind, TXLSReportAggregate ir TXLSReportJoinKind konfigūruoja TXLSReportTableFactory

Agregatų apibrėžimaiCountAggregate, MinAggregate ir Aggregate
Projekcija ir redukcijaTop, Columns, NRows ir Min
KompozicijaUnion, Join ir Split grąžina vėluojančius rodinius nekopijuodami pilnų tarpinių eilučių duomenų

Pavadintos ir aiškios diapazono juostos

TXLSReportBandKind parenka eilutės, stulpelio ar kryžminės lentelės išplėtimą, o TXLSReportBandState praneša gyvavimo ciklo būseną

TXLSCompiledReportBand priima tikslaus aprėpties pavadintą vardą ar CreateForRange, tada plečiasi per Run perrašymus; DefinedName, ScopeSheetIndex, Kind, Sheet, SheetIndex, FirstRow, FirstCol, LastRow, LastCol, TargetCount ir State atskleidžia sukompiliuotą planą

EmptyBandPolicy (tipas TXLSEmptyBandPolicy) nurodo, ką juosta daryba su savo šablono eilutėmis, kai duomenų rinkinys tuščias — xreKeepTemplate palieka eilutes nepaliestas, xreClearTemplate išvalo juostos langelius kartu su vietos žymėmis, xreDeleteTemplate ištrina šablono eilutes — o DeleteLastRow po kopijų įrašymo pašalina paskutines išplėsto bloko BandHeight eilutes, kad galo X diapazono skyriklio eilutės susigrižtų

FixedBand priverčia eilučių juostas perrašyti žemiau šablono esančias eilutes vietoje įterpti naujas, todėl aplinkinis turinys lieka fiksuotose pozicijose

TXLSCompiledTableReportBand.Run išplečia vieną Excel lentelės duomenų šablono eilutę, išlaikydamas lentelės metaduomenis; tikrinkite TableName, Sheet, SheetIndex, ExcelTable, TemplateRow ir State

Diapazono ir Excel lentelių juostos bendrai naudoja ErrorMode, StrictDataAccess, RuntimeLimits ir nekintamus LastResult momentines kopijas; xremWriteAndContinue kaip literalią diagnostiką įrašo tik aiškias atkuriamas langelių klaidas, užfiksuoja šaltinio BandInputRow ir faktines išvesties koordinates ir tęsia likusius tikslus bei eilutes, o struktūrinės, atšaukimo, išteklių ribų, atgalinių iškvietimų ir atšaukimo (rollback) klaidos lieka mirtinos

TXLSCompiledSheetReportBand.Run kuria atskirus įrašų darbalapius naudodamas NameColumn, NamePrefix ir DeleteTemplateAfterRun; TXLSCompiledOverflowReportBand.Run kuria tęstinius darbalapius naudodamas NamePrefix ir DeleteTemplateAfterRun

Visos darbo knygos šablonai

TXLSReportTemplateTarget ir TXLSReportTemplateTargets parenka langelius, komentarus, hipersaitus, formas, antraštes ir poraštes, darbalapio pavadinimus, pavadintus vardus ir dokumento savybes

TXLSCompiledReportTemplate.Compile užfiksuoja tikslus ir išraiškas, Analyze grąžina adresuotas TXLSReportIssues, Run perrašymai pritaiko reikšmes, o WriteDiagnostics įrašo problemas į darbalapį; TargetAreas ir TargetCount apibūdina sukompiliuotą paviršių

ProcessStructuralDirectives (numatytoji reikšmė True) priverčia šablono Run po reikšminių tikslų pritaikymo vykdyti struktūrines {{#delete}} ir {{#format}} direktyvas — TXLSReportDirectiveProcessor išanalizuoja diapazonus, pritaiko juos ir per AppliedCount praneša, kiek jų apdorota — o CreateEncrypted atveria šifruotą šabloną su slaptažodžiu ir jį sukompiliuoja, darbo knygą palikdamas pasiekiamą per Workbook ypatybę

TXLSReportIssueKind, TXLSReportIssue ir TXLSReportIssues nustato netinkamai suformuotą, trūkstamą, negaliojantį, nežinomą ar ciklinį vietos rezervavimo turinį kartu su tikslo ir langelio koordinatėmis

Įtraukimai, paveikslėliai ir formatavimas

IXLSReportIncludeResolver.Resolve tiekia pavadintus fragmentus, o jo Immutable vėliavėlė leidžia saugų pakartotinį naudojimą; TXLSReportIncludeLibrary pateikia Add, Remove, Clear, Freeze, Resolve, Count ir Immutable

IXLSReportImageProvider.TryGetImage grąžina TXLSReportImageValue, konfigūruojamą TXLSReportImageFit; TXLSReportMissingImagePolicy valdo trūkstamus išteklius, o TXLSReportImageBinder.Apply, MissingPolicy ir ClearDirectiveCell atnaujina tikslias paveikslėlių direktyvas

TXLSReportImageBinder.ApplyTargetV2 per V2 teikėjo sutartį susieja vieną direktyvos langelį ir persiunčia TXLSReportTransformImageEvent, galintį perrašyti išspręstą duomenų paketą jam patenkant į vietą; pats išspręstasis vietos ženklas — TXLSReportEvaluatedTarget, kurio TXLSReportEvaluatedTargetKind atskiria xretNone, xretText, xretValue ir xretFormula; IXLSReportImageCancellation.IsCancellationRequested leidžia ilgai veikiantiems teikėjams pastebėti bendradarbiavimu paremtą atšaukimą

IXLSReportImageDataProviderV2.GetImage gauna TXLSReportImageRequest su stabiliu darbalapio identifikatoriumi, sukompiliuotu tikslu, juostų ir lentelių pavadinimais, loginėmis ir žymeklio eilutėmis, tik skaitoma dabartinės eilutės vaizdu, direktyvų ir inkaro langeliais, tikslų matmenimis ir poslinkiais EMU bei IXLSReportImageCancellation

TXLSReportImageResult neša TXLSReportImagePayload, kurio Kind (TXLSReportImagePayloadKind) pasirenka xripMissing, baitus arba srautą, o srauto gyvavimo laikas deklaruojamas TXLSReportImageStreamOwnership: xrisoBorrowed srautai lieka kviestiejo nuosavybe ir esant galimybei atkuria poziciją, xrisoTransferred srautai atlaisvinami tiksliai vieną kartą; neprivalomieji SourceWidth, SourceHeight, SourceDpiX ir SourceDpiY patvirtina arba perrašo fizinę šaltinio geometrija

xrifNatural naudoja šaltinio fizinį dydį, xrifContain masteluoja ir centravoja tiksliniame laukelyje, xrifCover užpildo laukelį simetriškai apkarpydamas šaltinį, o xrifStretch užpildo neišsaugodamas mastelio santykio; PNG, JPEG, GIF, BMP, EMF ir WMF geometrija skaitoma iš ribotu antraščių, neiškoduojant pikselių

OnTransformImage vyksta po to, kai teikėjo duomenys užfiksuoti momentinei kopijai, ir prieš darbalapio modifikavima; MaximumImageBytes numatytoji reikšmė 64 MiB, o paketų parašai, geometrijos antraštės, matmenų ir DPI poros, rastrų kraštinių ir pikselių ribos, inkarai ir tinklelio koordinatės patikrinami prieš susiejima

TXLSXImage.OffsetXEMU ir OffsetYEMU išlaiko vaizdo poziciją langelyje arba absoliučiame inkare per XLSX ir ODS round-trip ciklus

TXLSReportDynamicFormat ir TXLSReportFormatEvent leidžia vykdyklei taikyti skaičių formatus, eilučių aukščius ir stulpelių pločius kiekvienam tikslui

Daugkartinio naudojimo vykdymas

TXLSReportRunPhase, TXLSReportRunState, TXLSReportRunProgress ir TXLSReportRunProgressEvent apibūdina eigos ir atšaukimo ribas

TXLSCompiledReportRunner atskleidžia Run, RunToStream, RunToFile ir Cancel, o ReportTemplate, State, Progress, OnProgress ir OnFormat valdo daugkartinio naudojimo vykdymą; nepavykusi tikrinimas iškelia EXLSReportData prieš deterministinius įrašymus

ErrorMode (tipas TXLSReportErrorMode) pagal numatymą xremStop; xremWriteAndContinue apdoroja tik aiškias EXLSReportRecoverableData klaidas ir sprendėjo DataError rezultatus, į LastResult (objektą IXLSReportRunResult su State, AppliedCount, IssueCount, indeksuotais Issues ir mirtinos klaidos FailureClassName / FailureMessage) įrašo surikiuotas nekintamas problemas, kurių TXLSReportRuntimeIssue momentinės kopijos atskleidžia Category (TXLSReportRuntimeIssueCategory: xrricDataAccess, xrricProvider arba xrricExpression) ir praneša TargetIndex, SheetName, Col bei ar problema jau buvo įrašyta į išvestį (WasWritten), o paleidimas baigiamas kaip xrrsCompletedWithErrors

TXLSReportRuntimeLimits.Defaults allows 100,000 retained issues, 512 characters per sanitized message, and 16 MiB of issue memory; assign a positive custom RuntimeLimits record before a run, and leave RuntimeDiagnosticsSheetName empty unless one structured diagnostics worksheet is required

Atkuriamos langelių reikšmės ir formulės tampa literaliu [Report error CODE] message tekstu, saugūs ne langelių tikslai išlaiko originalią reikšmę, o neprivalomoji diagnostikos darbalapis tuos struktūrinius užfiksuotus sutrikimus pažymi kaip įrašytus; darbalapio pavadinimo ir apibrėžtojo vardo formulės klaidos visada sustabdo, nes gali pakeisti darbo knygos struktūrą

Sprendėjo deklaruotos duomenų klaidos, išraiškos dalyba iš nulio ir negaliojančios reguliariosios išraiškos naudoja stabilius teikėjo arba išraiškos kategorijas; metamos sprendėjo išimtys ir visos atgalinių iškvietimų, atšaukimo, išteklių ribų, atšaukimo (rollback), serializacijos, saugos bei struktūrinės klaidos lieka mirtinos

RunToStream, RunToFile ir RunToEncryptedFile serializacija vyksta to paties paleidimo ir duomenų seanso gyvavimo metu, o paskelbiama vieną kartą; bet kuri mirtina, atšaukta, serializacijos, dalinio srauto rašymo ar paskirties pakeitimo klaida išsaugo pilną ankstesnę paskirtį ir prieš grąžindama atlaisvina laikinąją saugyklą

Netuščias išvesties srautas turi būti skaitomas, rašomas, keičiamo dydžio ir leidžiantis pozicionuoti, kad atšaukimas (rollback) galėtų atkurti originalius baitus, dydį ir poziciją; momentinės kopijos iki 8 MiB lieka atmintyje, didesnės naudoja valdomą laikinąją saugyklą, o sėkmingas įsipareigojimas palieka srautą nulinėje pozicijoje

Nešifruota išvestis naudoja sugeneruotos darbo knygos šaltinio formatą, tad ODS šablonas duoda ODS srautą ar failą su reikalingais paketo metaduomenimis; šifruota išvestis iki šiol rašoma į šifruotą Office konteinerį

ImageProvider išlaiko originalią suderinamumo sutartį; ImageProviderV2, OnTransformImage, MaximumImageBytes, MissingImagePolicy ir ClearImageDirectiveCell leidžia paleidėjui, generatoriui, diapazono juostai ar Excel lentelių juostai tiesiogiai vartoti ikikompiliuotus {{#image Key}} tikslus; neturint abiejų teikėjų tie direktyvos langeliai lieka nepakitę

AutofitMode (tipas TXLSReportAutofitMode) pasirenka viso lakšto automatinį pritaikymą (xramNone, xramRows, xramColumns arba xramBoth), taikomą vieną kartą po visų tikslų, o AutofitAdjustment — papildomas atsargos koeficientas (1.0 = jokio, 1.1 = 10% aukštesnės eilutės)

Generavimo gyvavimo ciklas ir šablonų šaltiniai

TXLSReportLifecyclePhase identifikuoja šablono skaitymo, darbo knygos generavimo ir darbalapio generavimo ribas, o TXLSReportLifecycleOutcome atskira įvykdytus, užbaigtus, atšauktus ir nepavykusius atgalinius iškvietimus

TXLSReportLifecycleContext pateikia aktyvią darbo knygą ir darbalapį, stabilų darbalapio identifikatorių, originalias ir dabartines koordinates, tik skaitomą IXLSReportDataView, tikslų skaičių ir pirmosios klaidos detales; kiekvienas ivykdytas prieš įvykis gauna suporuotą po įvykio, net kai generavimas atšaukiamas ar nepavyksta

TXLSCompiledReportRunner.BeforeGenerateWorkbook, AfterGenerateWorkbook, BeforeGenerateSheet ir AfterGenerateSheet stebi užšaldytą originalių darbalapių aibę; atgalinių iškvietimų inicijuoti struktūros pakeitimai suaktyvina kompiliacijos atnaujinimą, nepridėdami naujai sukurtų darbalapių prie dabartinio paleidimo

TXLSReportGenerator priima darbo knygą, failo vardą, kviestiejo valdomą srautą ar šifruotą failą ir prie generavimo ivykiiu prideda BeforeReadTemplate bei AfterReadTemplate; TXLSReportModificationMode pasirenka suderinamą modifikavimą vietoje arba izoliuotą generavimą atomine kopija. Tik skaitomas SourceKind (tipas TXLSReportTemplateSourceKind: xrtsWorkbook, xrtsFile, xrtsStream arba xrtsEncryptedFile) ir TemplateWorkbook praneša sukonfigūruotą šablonų šaltinį, o ModificationMode ir IncludeResolver nustatomi iki paleidimo

Su failu ir srautu pateiktiems šablonams pagal numatymą taikoma xrmAtomicClone; pozicionuojami ivesties srautai atkuria originalią poziciją, tik pirmyn einantys skaitomi ribotais blokais, kviestiejo srautai lieka atverti, o išvesties srautai ar failai pakeičiami tik sėkmingai užbaigus

Planavimas, tikrinimas ir perkėlimas

TXLSReportPaginationPlanner pateikia KeepTogether, SplitRows, MergeSimilar ir BalanceColumns planus fiksuotoms poraštėms ir subalansuotai išvestiai

TXLSReportTemplateChecker pateikia Check, CheckBand ir CheckTableBand; TXLSReportTemplateMigrator pateikia MigrateText ir MigrateWorkbook palaikomoms senosioms vietos rezervavimo formoms

Pavyzdys

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 pavyzdys

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;

The Delphi FeatureShowcase and C++Builder XlsxFeatureGallery contain complete runnable versions that verify the completed-with-errors state and issue count before releasing the runner

Taip pat žiūrėkite