Ö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
| IXLSReportCursor | MoveNext, RowIndex és Values egyszerre egy előrehaladó (forward-only) sort tesz elérhetővé |
| IXLSReportTable | Name, ColumnCount, ColumnNames és CreateCursor újrahasznosítható táblázatos forrást definiál |
| IXLSReportRandomAccessTable | RowCount és a kétdimenziós Values indexelt hozzáférést ad, amelyet az összekapcsolások és relációs indexek használnak |
| IXLSReportTableProvider | TryGetTable lusta (lazy) módon old fel egy nevesített táblát |
| TXLSReportMemoryTable | AddRow, ColumnIndexOf, CreateCursor, ColumnCount, ColumnNames és RowCount egy saját tulajdonú memóriabeli implementációt biztosítanak |
| TXLSReportDataContext | RegisterTable, 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ók | CountAggregate, MinAggregate és Aggregate |
| Projekció és redukció | Top, Columns, NRows és Min |
| Összetétel | Union, 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