API گزارشدهی کامپایلشده
واحد lxReport جاینگهدارها و نوارهای گزارش ساختاری را یک بار کامپایل میکند و سپس دادههای متعلق به فراخواننده را از طریق مکاننمای کراندار اعمال میکند بدون آنکه اشیای کتاب کار تولیدشده را مجدداً پویش کند
قراردادهای جدول و مکاننما
| IXLSReportCursor | MoveNext، RowIndex و Values هر بار یک سطر فقط-رو به جلو را در معرض دید قرار میدهند |
| IXLSReportTable | Name، ColumnCount، ColumnNames و CreateCursor یک منبع جدولی قابل استفاده مجدد را تعریف میکنند |
| IXLSReportRandomAccessTable | RowCount و Values دوبعدی دسترسی نمایهشدهٔ مورد استفاده در الحاقها و نمایههای رابطه را اضافه میکنند |
| IXLSReportTableProvider | TryGetTable یک جدول نامدار را بهصورت تنبل حل میکند |
| TXLSReportMemoryTable | AddRow، ColumnIndexOf، CreateCursor، ColumnCount، ColumnNames و RowCount یک پیادهسازی درونحافظهای مالکیتدار ارائه میدهند |
| TXLSReportDataContext | RegisterTable، AddProvider، TryGetTable، RequireTable، ClearLoadedTables و LoadedTableCount منابع فوری و تنبل را هماهنگ میکنند |
فراهمکنندههای پرسوجوی کنترلشده
IXLSReportQueryExecutor.ExecuteReadOnly اجرای پرسوجو را متعلق به میزبان نگه میدارد و فقط تعریفهایی را میپذیرد که توسط کد برنامه ثبت شدهاند
TXLSReportQueryParameter، TXLSReportQueryParameters و TXLSReportQueryDefinition Name، CommandText، TimeoutMS، ParameterCount، Parameters، SetParameter و ClearParameters را در معرض دید قرار میدهند
TXLSReportQueryProvider از RegisterQuery، RemoveQuery، Clear و TryGetTable استفاده میکند و Count، Definitions و MaximumTimeoutMS فهرست سفید و سقف زمان انتظار را در معرض دید قرار میدهند
نشستهای داده هر اجرا
IXLSReportDataSession کش تنبلِ ایزولهشده پشت یک اجرای گزارش است: DeclareRequest یک TXLSReportDataRequest ثبت میکند (با نوع TXLSReportDataRequestKind: xrdrkNamed یا xrdrkUser) که TXLSReportDataSource آن (با نوع TXLSReportDataSourceKind: نامشخص، سلول، باند محدوده، باند جدول یا عبارت) و فهرست TXLSReportDataParameter آن منبع و مقادیرش را توصیف میکنند و RunControl آن دسته لغو IXLSReportRunControl میزبان است؛ HasResolver یک کلید فراهمکننده را آزمایش میکند، TryGetTable و RequireTable نامهای مستعار کششده را میخوانند، TryResolveTable و RequireResolvedTable در صورت نیاز به یک TXLSReportDataResolveResult حل میکنند (با وضعیت TXLSReportDataResolveStatus: xrdrsUnhandled، xrdrsResolved، xrdrsNotFound یا xrdrsDataError) و TryGetState یک TXLSReportDataSessionState از در حال بارگذاری، حلشده، پیدا نشده یا خطای داده را گزارش میکند، در حالی که CachedAliasCount و ResolvedAliasCount اندازه نشست را نشان میدهند
IXLSReportDataView.TryGetValue یک مقدار نامدار را بدون raise کردن پیدا میکند و مکمل دسترسیهای اندیسی Count، Names و Values است
روابط و ترکیبکنندههای جدول تنبل
TXLSReportRowIndexes و TXLSReportRelationIndex شمارههای سطر فرزند را در سطلهای کلید مرکب نگه میدارند؛ از FindChildRows یا CreateChildCursor استفاده کنید و BucketCount یا IndexedRowCount را بررسی کنید
TXLSReportAggregateKind، TXLSReportAggregate و TXLSReportJoinKind TXLSReportTableFactory را پیکربندی میکنند
| تعریفهای تجمع | CountAggregate، MinAggregate و Aggregate |
| تصویرسازی و کاهش | Top، Columns، NRows و Min |
| ترکیب | Union، Join و Split نماهای تنبل را بدون کپی کردن بار کامل سطرهای میانی برمیگردانند |
نوارهای محدوده نامدار و صریح
TXLSReportBandKind گسترش سطر، ستون یا جدول متقاطع را انتخاب میکند و TXLSReportBandState وضعیت چرخه حیات را گزارش میدهد
TXLSCompiledReportBand یک نام تعریفشده با محدوده دقیق یا CreateForRange را میپذیرد و سپس از طریق نسخههای سربارگذاریشدهٔ Run گسترش مییابد؛ DefinedName، ScopeSheetIndex، Kind، Sheet، SheetIndex، FirstRow، FirstCol، LastRow، LastCol، TargetCount و State طرح کامپایلشده را در معرض دید قرار میدهند
TXLSCompiledTableReportBand.Run یک سطر الگوی داده-جدول اکسل را در حالی که فراداده جدول حفظ میشود گسترش میدهد؛ TableName، Sheet، SheetIndex، ExcelTable، TemplateRow و State را بررسی کنید
TXLSCompiledSheetReportBand.Run کاربرگهای هر-رکورد را با استفاده از NameColumn، NamePrefix و DeleteTemplateAfterRun ایجاد میکند؛ TXLSCompiledOverflowReportBand.Run کاربرگهای ادامه را با استفاده از NamePrefix و DeleteTemplateAfterRun ایجاد میکند
قالبهای کل-کتاب-کار
TXLSReportTemplateTarget و TXLSReportTemplateTargets سلولها، نظرات، ابرپیوندها، اشکال، سرصفحهها و پاصفحهها، نام کاربرگها، نامهای تعریفشده و ویژگیهای سند را انتخاب میکنند
TXLSCompiledReportTemplate.Compile اهداف و عبارتها را ضبط میکند، Analyze TXLSReportIssues آدرسدار را برمیگرداند، نسخههای سربارگذاریشدهٔ Run مقادیر را اعمال میکنند و WriteDiagnostics مسائل را در یک کاربرگ مینویسد؛ TargetAreas و TargetCount سطح کامپایلشده را توصیف میکنند
TXLSReportIssueKind، TXLSReportIssue و TXLSReportIssues محتوای جاینگهدار مخدوش، گمشده، نامعتبر، ناشناخته یا چرخهای را با مختصات هدف و سلول شناسایی میکنند
شاملها، تصاویر و قالببندی
IXLSReportIncludeResolver.Resolve قطعات نامدار را فراهم میکند و پرچم Immutable آن استفاده مجدد امن را ممکن میسازد؛ TXLSReportIncludeLibrary Add، Remove، Clear، Freeze، Resolve، Count و Immutable را ارائه میدهد
IXLSReportImageProvider.TryGetImage یک TXLSReportImageValue برمیگرداند که توسط TXLSReportImageFit پیکربندی شده است؛ TXLSReportMissingImagePolicy منابع گمشده را کنترل میکند، در حالی که TXLSReportImageBinder.Apply، MissingPolicy و ClearDirectiveCell دستورات تصویر دقیق را بهروزرسانی میکنند
TXLSReportDynamicFormat و TXLSReportFormatEvent به یک اجراکننده اجازه میدهند قالبهای عددی، ارتفاع سطرها و عرض ستونها را بهازای هر هدف اعمال کند
اجرای قابل استفاده مجدد
TXLSReportRunPhase، TXLSReportRunState، TXLSReportRunProgress و TXLSReportRunProgressEvent مرزهای پیشرفت و لغو را توصیف میکنند
TXLSCompiledReportRunner Run، RunToStream، RunToFile و Cancel را در معرض دید قرار میدهد و ReportTemplate، State، Progress، OnProgress و OnFormat اجرای قابل استفاده مجدد را کنترل میکنند؛ اعتبارسنجی ناموفق پیش از نوشتنهای قطعی EXLSReportData را ایجاد میکند
چرخه حیات تولید و منابع قالب
TXLSReportLifecyclePhase مرزهای خواندن قالب، تولید کتاب کار و تولید کاربرگ را مشخص میکند و TXLSReportLifecycleOutcome فراخوانیهای وارد شده، تکمیل شده، لغو شده و ناموفق را تفکیک میکند
TXLSReportLifecycleContext کتاب کار و کاربرگ فعال، هویت پایدار کاربرگ، مختصات اصلی و جاری، یک IXLSReportDataView فقطخواندنی، تعداد هدف و جزئیات اولین خطا را تأمین میکند؛ هر رویداد before وارد شده، یک رویداد after جفت دارد حتی وقتی تولید لغو یا ناموفق باشد
TXLSCompiledReportRunner.BeforeGenerateWorkbook، AfterGenerateWorkbook، BeforeGenerateSheet و AfterGenerateSheet مجموعه منجمدی از کاربرگهای اصلی را مشاهده میکنند؛ تغییرات ساختاری ناشی از callback بدون افزودن برگههای تازهساخته به اجرای جاری، بازخوانی کامپایل را راه میاندازد
TXLSReportGenerator یک کتاب کار، نام فایل، stream متعلق به فراخوان یا فایل رمزگذاریشده میپذیرد و BeforeReadTemplate و AfterReadTemplate را به رویدادهای تولید اضافه میکند؛ TXLSReportModificationMode جهش درجا سازگار یا تولید کلون اتمی ایزوله را انتخاب میکند. SourceKind فقطخواندنی (با نوع TXLSReportTemplateSourceKind: xrtsWorkbook، xrtsFile، xrtsStream یا xrtsEncryptedFile) و TemplateWorkbook منبع قالب پیکربندیشده را گزارش میکنند و ModificationMode و IncludeResolver قبل از اجرا قابل تنظیم هستند
قالبهای فایل و stream بهصورت پیشفرض xrmAtomicClone هستند؛ جریانهای ورودی قابل جستوجو موقعیت اولیه خود را بازیابی میکنند، جریانهای فقط رو به جلو در بلوکهای محدود مصرف میشوند، stream های فراخوان باز میمانند و stream یا فایل خروجی فقط بعد از تکمیل موفق جایگزین میشوند
برنامهریزی، بررسی و مهاجرت
TXLSReportPaginationPlanner طرحهای KeepTogether، SplitRows، MergeSimilar و BalanceColumns را برای پاصفحههای ثابت و خروجی متوازن ارائه میدهد
TXLSReportTemplateChecker Check، CheckBand و CheckTableBand را ارائه میدهد؛ TXLSReportTemplateMigrator MigrateText و MigrateWorkbook را برای اشکال پشتیبانیشدهٔ جاینگهدار قدیمی ارائه میدهد
مثال Delphi
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
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;
نسخههای کامل و قابل اجرای FeatureShowcase در Delphi و XlsxFeatureGallery در C++Builder وضعیت completed-with-errors و شمار خطاها را قبل از آزاد کردن runner بررسی میکنند