HotXLS dokumentáció

Összeállított jelentéskészítő API

Az lxReport egység egyszer összeállítja (compilálja) a helykitöltőket és a strukturális jelentés-sávokat, majd a hívó által biztosított adatokat korlátozott kurzorokon keresztül alkalmazza anélkül, hogy újra beolvasná a generált munkafüzet-objektumokat

Tábla- és kurzorszerződések

IXLSReportCursorMoveNext, RowIndex és Values egyszerre egy előrehaladó (forward-only) sort tesz elérhetővé
IXLSReportTableName, ColumnCount, ColumnNames és CreateCursor újrahasznosítható táblázatos forrást definiál
IXLSReportRandomAccessTableRowCount és a kétdimenziós Values indexelt hozzáférést ad, amelyet az összekapcsolások és relációs indexek használnak
IXLSReportTableProviderTryGetTable lusta (lazy) módon old fel egy nevesített táblát
TXLSReportMemoryTableAddRow, ColumnIndexOf, CreateCursor, ColumnCount, ColumnNames és RowCount egy saját tulajdonú memóriabeli implementációt biztosítanak
TXLSReportDataContextRegisterTable, AddProvider, TryGetTable, RequireTable, ClearLoadedTables és LoadedTableCount koordinálja a mohó (eager) és lusta forrásokat; a RegisterResolver, HasResolver, RemoveResolver, ClearResolvers és ResolverCount a típusos feloldókat kezelik, a BeginRun pedig elkülönített, futásonkénti munkamenetbe pillanatképezi a táblákat és szolgáltatókat, így a külön futások soha nem osztoznak szolgáltatói eredményeken

Vezérelt lekérdezés-szolgáltatók

IXLSReportQueryExecutor.ExecuteReadOnly a lekérdezés-végrehajtást a gazdaalkalmazás tulajdonában tartja, és csak az alkalmazáskód által regisztrált definíciókat fogadja el

TXLSReportQueryParameter, TXLSReportQueryParameters és TXLSReportQueryDefinition a Name, CommandText, TimeoutMS, ParameterCount, Parameters, SetParameter és ClearParameters tagokat teszik elérhetővé

TXLSReportQueryProvider a RegisterQuery, RemoveQuery, Clear és TryGetTable metódusokat használja, a Count, Definitions és MaximumTimeoutMS pedig az engedélyezési listát és az időtúllépési felső határt teszik elérhetővé

Futásonkénti adatmunkamenetek

Az IXLSReportDataSession egyetlen riportfutás mögötti izolált, lusta gyorsítótár: a DeclareRequest egy TXLSReportDataRequest kérést regisztrál (típusa TXLSReportDataRequestKind: xrdrkNamed vagy xrdrkUser), amelynek TXLSReportDataSource forrása (típusa TXLSReportDataSourceKind: meghatározatlan, cella, tartománysáv, táblasáv vagy kifejezés) és TXLSReportDataParameter listája írja le a forrást és annak értékeit, a RunControl pedig a gazda IXLSReportRunControl megszakítási fogantyúja; a HasResolver szolgáltatókulcsot tesztel, a TryGetTable és a RequireTable a gyorsítótárazott aliasokat olvassa, a TryResolveTable és a RequireResolvedTable igény szerint old fel egy TXLSReportDataResolveResult eredménybe (állapota TXLSReportDataResolveStatus: xrdrsUnhandled, xrdrsResolved, xrdrsNotFound vagy xrdrsDataError), a TryGetState betöltés, feloldott, nem talált vagy adathiba állapotú TXLSReportDataSessionState értéket jelent, a CachedAliasCount és a ResolvedAliasCount pedig a munkamenet méretét tükrözi

Az IXLSReportDataView.TryGetValue egyetlen nevesített értéket keres ki kivétel dobása nélkül, kiegészítve az indexelt Count, Names és Values hozzáférőket

Relációk és lusta tábla-kombinátorok

TXLSReportRowIndexes és TXLSReportRelationIndex az alsorok számát összetett kulcsú gyűjtőkosarakban tartja meg; használja a FindChildRows vagy a CreateChildCursor metódust, és ellenőrizze a BucketCount vagy az IndexedRowCount értéket

TXLSReportAggregateKind, TXLSReportAggregate és TXLSReportJoinKind konfigurálja a TXLSReportTableFactory osztályt, amelynek sorszűrői a TXLSReportFilterOperator (xrfoEqual, xrfoNotEqual, xrfoGreater, xrfoGreaterEqual, xrfoLess, xrfoLessEqual, xrfoContains, xrfoStartsWith, xrfoEndsWith) operátorokkal hasonlítanak össze

Aggregátum-definíciókCountAggregate, MinAggregate és Aggregate
Projekció és redukcióTop, Columns, NRows és Min
ÖsszetételUnion, Join és Split lusta nézeteket adnak vissza anélkül, hogy a köztes sorsorok teljes másolatát létrehoznák

Nevesített és explicit tartománysávok

TXLSReportBandKind sor-, oszlop- vagy kereszttáblás (cross-tab) bővítést választ, a TXLSReportBandState pedig az életciklus-állapotot jelenti

TXLSCompiledReportBand egy pontos hatókörű definiált nevet vagy a CreateForRange metódust fogad el, majd a Run túlterheléseken keresztül bővül; a DefinedName, ScopeSheetIndex, Kind, Sheet, SheetIndex, FirstRow, FirstCol, LastRow, LastCol, TargetCount és State teszi elérhetővé az összeállított tervet

EmptyBandPolicy (típus: TXLSEmptyBandPolicy) vezérli, hogy a sáv mit tesz a sablonsoraival, ha az adatkészlet üres — az xreKeepTemplate érintetlenül hagyja a sorokat, az xreClearTemplate törli a sáv celláit a helykitöltőkkel együtt, az xreDeleteTemplate pedig törli a sablonsorokat —, a DeleteLastRow pedig a kibővített blokk utolsó BandHeight sorát eltávolítja, miután a másolatai a helyükre kerültek, így a záró X-tartomány elválasztó sorok összeomlanak

A FixedBand azt eredményezi, hogy a sávok a sablon alatti sorok felülírásával, új sorok beszúrása helyett bővülnek, így a környező tartomány pozíciója rögzített marad

TXLSCompiledTableReportBand.Run egy Excel-tábla adatsablon-sorát bővíti ki a tábla metaadatainak megőrzése mellett; ellenőrizze a TableName, Sheet, SheetIndex, ExcelTable, TemplateRow és State tagokat

A tartomány- és Excel-tábla sávok közösen használják az ErrorMode, StrictDataAccess és RuntimeLimits beállításokat, valamint a változatlan LastResult pillanatképeket; az xremWriteAndContinue kizárólag a kifejezett, helyreállítható cellahibákat írja literal diagnosztikaként, rögzíti a forrás BandInputRow sort és a tényleges kimeneti koordinátákat, majd a későbbi célokkal és sorokkal folytatja, miközben a strukturális, megszakítási, erőforráskorlát-, visszahívási és visszagörgetési hibák végzetesek maradnak

TXLSCompiledSheetReportBand.Run rekordonkénti munkalapokat hoz létre a NameColumn, NamePrefix és DeleteTemplateAfterRun segítségével; a TXLSCompiledOverflowReportBand.Run folytatólagos munkalapokat hoz létre a NamePrefix és DeleteTemplateAfterRun használatával

Teljes munkafüzetet lefedő sablonok

TXLSReportTemplateTarget és TXLSReportTemplateTargets cellákat, megjegyzéseket, hiperhivatkozásokat, alakzatokat, fejléceket és lábléceket, munkalapneveket, definiált neveket és dokumentumtulajdonságokat választ ki

TXLSCompiledReportTemplate.Compile rögzíti a célokat és kifejezéseket, az Analyze a megcímzett TXLSReportIssues objektumot adja vissza, a Run túlterhelések alkalmazzák az értékeket, a WriteDiagnostics pedig munkalapra írja a problémákat; a TargetAreas, TargetCount és UserTableCount az összeállított felületet és a regisztrált felhasználói táblákat írják le

A ProcessStructuralDirectives (alapértelmezetten True) arra utasítja a sablon Run futását, hogy az értékcélok alkalmazása után végrehajtsa a strukturális {{#delete}} és {{#format}} direktívákat — a mögötte álló TXLSReportDirectiveProcessor elemzi a tartományokat, alkalmazza őket, és az AppliedCount révén jelenti, hányat dolgozott fel —, a CreateEncrypted pedig jelszóval nyit meg titkosított sablont, és úgy fordítja le, hogy a munkafüzet a Workbook tulajdonságon keresztül elérhető maradjon

TXLSReportIssueKind, TXLSReportIssue és TXLSReportIssues azonosítja a hibás, hiányzó, érvénytelen, ismeretlen vagy ciklikus helykitöltő-tartalmakat cél- és cellakoordinátákkal

Belefoglalások, képek és formázás

IXLSReportIncludeResolver.Resolve nevesített töredékeket szolgáltat, az Immutable jelzője pedig biztonságos újrafelhasználást tesz lehetővé; a TXLSReportIncludeLibrary az Add, Remove, Clear, Freeze, Resolve, Count és Immutable tagokat biztosítja

IXLSReportImageProvider.TryGetImage egy TXLSReportImageValue értéket ad vissza, amelyet a TXLSReportImageFit konfigurál; a TXLSReportMissingImagePolicy a hiányzó erőforrásokat vezérli, míg a TXLSReportImageBinder.Apply, ApplyTarget, MissingPolicy és ClearDirectiveCell a pontos képdirektívákat frissítik

A TXLSReportImageBinder.ApplyTargetV2 egyetlen direktívacellát köt össze a V2 szolgáltatói szerződésen keresztül, és továbbít egy TXLSReportTransformImageEvent eseményt, amely a resolved hasznos teher érkezése előtt átírhatja azt; maga a feloldott helykitöltő egy TXLSReportEvaluatedTarget, amelynek TXLSReportEvaluatedTargetKind típusa megkülönbözteti az xretNone, xretText, xretValue és xretFormula értékeket; az IXLSReportImageCancellation.IsCancellationRequested lehetővé teszi, hogy a hosszú futású szolgáltatók kooperatív megszakítást figyeljenek

Az IXLSReportImageDataProviderV2.GetImage egy TXLSReportImageRequest objektumot kap stabil munkalap-azonossággal, összeállított céllal, sáv- és táblanevekkel, logikai és kurzor sorokkal, írásvédett aktuális sornézettel, direktíva- és horgonycellákkal, a cél méreteivel és EMU-ban megadott eltolásaival, valamint IXLSReportImageCancellation felülettel

A TXLSReportImageResult egy TXLSReportImagePayload tartalmat hordoz, amelynek Kind tulajdonsága (TXLSReportImagePayloadKind) választja ki az xripMissing, bájt vagy adatfolyam lehetőséget, az adatfolyam élettartamát pedig a TXLSReportImageStreamOwnership deklarálja: az xrisoBorrowed adatfolyamok a hívó tulajdonában maradnak, és ha pozicionálhatók, visszaállítják a pozíciójukat, az xrisoTransferred adatfolyamokat pedig pontosan egyszer szabadítják fel; az opcionális SourceWidth, SourceHeight, SourceDpiX és SourceDpiY ellenőrzi vagy felülírja a forrás fizikai geometriáját

Az xrifNatural a forrás fizikai méretét használja, az xrifContain a célkereten belül méretez és középre igazít, az xrifCover a keretet szimmetrikus forrásvágással tölti ki, az xrifStretch pedig oldalarány megőrzése nélkül tölti ki; a PNG, JPEG, GIF, BMP, EMF és WMF geometriát korlátos fejlécekből olvassa, pixeldekódolás nélkül

Az OnTransformImage a szolgáltatói adatok pillanatképezése után, de a munkalap módosítása előtt fut; a MaximumImageBytes alapértéke 64 MiB, és a hasznos teher aláírásait, geometriafejléceit, dimenzió- és DPI-párokat, raszteroldal- és pixellimiteket, horgonyokat és rácskoordinátákat a kötés előtt ellenőrzi

A TXLSXImage.OffsetXEMU és OffsetYEMU a kép cellán belüli vagy abszolút horgonyú pozícióját megőrzi az XLSX és ODS oda-vissza konverziók során

TXLSReportDynamicFormat és TXLSReportFormatEvent lehetővé teszi, hogy egy futtató számformátumokat, sormagasságokat és oszlopszélességeket alkalmazzon célonként

Újrahasznosítható végrehajtás

TXLSReportRunPhase, TXLSReportRunState, TXLSReportRunProgress és TXLSReportRunProgressEvent a folyamatjelzés és a megszakítás határait írják le

TXLSCompiledReportRunner a Run, RunToStream, RunToFile, RunToEncryptedFile és Cancel metódusokat teszi elérhetővé, a ReportTemplate, State, Progress, OnProgress és OnFormat pedig az újrahasznosítható végrehajtást vezérli; a sikertelen érvényesítés EXLSReportData kivételt vált ki a determinisztikus írások előtt

Az ErrorMode (típus: TXLSReportErrorMode) alapértéke xremStop; az xremWriteAndContinue kizárólag a kifejezett EXLSReportRecoverableData hibákat és a feloldói DataError eredményeket kezeli, rendezett, változatlan problémákat rögzít a LastResult objektumban (egy IXLSReportRunResult, amely elérhetővé teszi a State, AppliedCount, IssueCount, az indexelt Issues elemeket, valamint végzetes hiba esetén a FailureClassName / FailureMessage értékeket), amelyek TXLSReportRuntimeIssue pillanatképei közlik a Category kategóriát (a TXLSReportRuntimeIssueCategory egyikét: xrricDataAccess, xrricProvider vagy xrricExpression), jelentik a TargetIndex, SheetName, Col értékeket és azt, hogy a probléma már bekerült-e WasWritten a kimenetbe, és xrrsCompletedWithErrors állapottal fejeződik be

A TXLSReportRuntimeLimits.Defaults 100 000 megtartott problémát, üzenetenként 512 karaktert és 16 MiB problémemóriát engedélyez; futás előtt rendeljen hozzá pozitív egyéni RuntimeLimits rekordot, és hagyja üresen a RuntimeDiagnosticsSheetName értékét, kivéve ha strukturált diagnosztikai munkalapra van szükség

A helyreállítható cellaértékek és képletek literal [Report error CODE] message szöveggé válnak, a biztonságos nem cella célok megtartják eredeti értéküket, az opcionális diagnosztikai munkalap pedig ezekket a strukturált problémákat megírottként jelöli; a munkalapnév és a definiált névképlet hibák mindig megállítják a futást, mert megváltoztathatják a munkafüzet szerkezetét

A feloldók által jelzett adatihibák, a kifejezésbeli nullával osztás és az érvénytelen reguláris kifejezések stabil szolgáltatói vagy kifejezéskategóriákat használnak; a dobott feloldói kivételek, valamint minden visszahívási, megszakítási, erőforráskorlát-, visszagörgetési, szerializációs, biztonsági és strukturális hiba végzetes marad

A RunToStream, RunToFile és RunToEncryptedFile a szerializációt ugyanazon futás és adatmunkamenet élettartamán belül hajtja végre, majd egyszer publikál; minden végzetes, megszakított, szerializációs, részleges adatfolyam-írási vagy célhely-csere hiba megőrzi a korábbi teljes célhelyet, és visszatérés előtt felszabadítja az ideiglenes tárolót

A nem üres kimeneti adatfolyamnak olvashatónak, írhatónak, méretezhetőnek és pozicionálhatónak kell lennie, hogy a visszagörgetés visszaállíthassa eredeti bájait, méretét és pozícióját; a 8 MiB-ig terjedő pillanatképek memóriában maradnak, a nagyobbak kezelt ideiglenes tárolót használnak, a sikeres véglegesítés pedig az adatfolyamot nulla pozícióra állítja

A titkosítatlan kimenet a generált munkafüzet forrásformátumát használja, így egy ODS sablon a szükséges csomagmetaadatokkal együtt ODS adatfolyamot vagy fájlt készít; a titkosított kimenet továbbra is a titkosított Office tárolót használja

Az ImageProvider megőrzi az eredeti kompatibilitási szerződést; az ImageProviderV2, OnTransformImage, MaximumImageBytes, MissingImagePolicy és ClearImageDirectiveCell révén egy futtató, generátor, tartománysáv vagy Excel-tábla sáv közvetlenül felhasználhatja az előfordított {{#image Key}} célokat; ha mindkét szolgáltatót elhagyja, ezek a direktívacellák változatlanok maradnak

Az AutofitMode (típus: TXLSReportAutofitMode) teljes munkalapra kiterjedő automatikus illesztést választ (xramNone, xramRows, xramColumns vagy xramBoth), amelyet az összes cél lefutása után egyszer alkalmaz, az AutofitAdjustment pedig egy extra ráhagyási tényező (1,0 = nincs, 1,1 = 10%-kal magasabb sorok)

Generálási életciklus és sablonforrások

A TXLSReportLifecyclePhase a sablonolvasás, a munkafüzet-generálás és a munkalap-generálás határait azonosítja, a TXLSReportLifecycleOutcome pedig megkülönbözteti a belépés, a befejezés, a megszakítás és a sikertelenség visszahívásait

A TXLSReportLifecycleContext biztosítja az aktív munkafüzetet és munkalapot, a stabil munkalap-identitást, az eredeti és az aktuális koordinátákat, egy írásvédett IXLSReportDataView nézetet, a célok számát és az első hiba részleteit; minden belépő elő-esemény párosul egy utána-eseménnyel, még akkor is, ha a generálás megszakad vagy sikertelen

A TXLSCompiledReportRunner.BeforeGenerateWorkbook, AfterGenerateWorkbook, BeforeGenerateSheet és AfterGenerateSheet az eredeti munkalapok befagyott halmazát figyeli; a visszahívásokból eredő szerkezetváltozás a fordítás frissítését váltja ki anélkül, hogy az újonnan létrehozott munkalapok bekerülnének az aktuális futásba

A TXLSReportGenerator fogad munkafüzetet, fájlnevet, a hívó tulajdonában lévő streamet vagy titkosított fájlt, és a generálási eseményekhez hozzáadja a BeforeReadTemplate és az AfterReadTemplate eseményeket; a TXLSReportModificationMode kompatibilis helybeni módosítás vagy izolált, atomi klón alapú generálás közül választ. Az írásvédett SourceKind (típusa TXLSReportTemplateSourceKind: xrtsWorkbook, xrtsFile, xrtsStream vagy xrtsEncryptedFile) és a TemplateWorkbook jelenti a beállított sablonforrást, a ModificationMode és az IncludeResolver pedig futás előtt állítható

A fájl- és streamsablonok alapértelmezése az xrmAtomicClone; a pozicionálható bemeneti streamek visszaállítják az eredeti pozíciójukat, a csak előre olvasható streamek korlátos blokkokban fogyódnak el, a hívó streamek nyitva maradnak, a kimeneti streameket vagy fájlokat pedig csak a sikeres befejezés után cseréli le a rendszer

Tervezés, ellenőrzés és migráció

TXLSReportPaginationPlanner KeepTogether, SplitRows, MergeSimilar és BalanceColumns terveket biztosít a rögzített láblécekhez és a kiegyensúlyozott kimenethez

TXLSReportTemplateChecker a Check, CheckBand és CheckTableBand metódusokat biztosítja; a TXLSReportTemplateMigrator a MigrateText és MigrateWorkbook metódusokat biztosítja a támogatott örökölt helykitöltő-formákhoz

Delphi-példa

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-példa

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;

A Delphi FeatureShowcase és a C++Builder XlsxFeatureGallery teljes futtatható változatokat tartalmaz, amelyek a runner kiadása előtt ellenőrzik a hibákkal befejezett állapotot és a problémák számát

Lásd még