翻譯|行業(yè)資訊|編輯:胡濤|2024-06-13 09:40:33.010|閱讀 71 次
概述:有時(shí),人們會聯(lián)系我們的技術(shù)支持,詢問一個(gè)常見問題:如何正確地將多份報(bào)告合并為一份,尤其是在導(dǎo)出之前。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
Stimulsoft Ultimate (原Stimulsoft Reports.Ultimate)是用于創(chuàng)建報(bào)表和儀表板的通用工具集。該產(chǎn)品包括用于WinForms、ASP.NET、.NET Core、JavaScript、WPF、PHP、Java和其他環(huán)境的完整工具集。無需比較產(chǎn)品功能,Stimulsoft Ultimate包含了所有內(nèi)容!
有時(shí),人們會聯(lián)系我們的技術(shù)支持,詢問一個(gè)常見問題:如何正確地將多份報(bào)告合并為一份,尤其是在導(dǎo)出之前。雖然這在技術(shù)上很簡單,但仍有一些選項(xiàng)需要考慮。例如,在合并報(bào)告時(shí)如何管理不同的度量單位或頁碼。沒有通用的解決方案,因?yàn)樗Q于報(bào)告創(chuàng)建者的具體目標(biāo)和目的。為了說明如何將多份報(bào)告合并為一份,我們?yōu)镴S和.NET開發(fā)了幾個(gè)示例。
即使是小代碼,也很容易出錯(cuò)。為了簡化流程,我們MergeDocument()在 StiReport 類中添加了一個(gè)用于合并報(bào)表的方法。在 JavaScript 報(bào)表工具中,此方法稱為mergeDocumentAsync()。
該方法以報(bào)表作為輸入,其頁面將添加到當(dāng)前報(bào)表中。它還有一個(gè)重載,接受布爾值作為第二個(gè)參數(shù),以確定是否需要預(yù)先構(gòu)建報(bào)表。這允許在一行中合并兩個(gè) StiReport 對象:report.MergeDocument(report2, true)。
使用儀表板的模板文件可以同時(shí)包含報(bào)表頁面和儀表板。但是,儀表板不是靜態(tài)對象,沒有固定的尺寸。雖然儀表板有一個(gè)Render()方法,但它只是一個(gè)占位符,不能像報(bào)表那樣構(gòu)建。儀表板的具體尺寸只能在導(dǎo)出期間設(shè)置,因此無法將報(bào)表和儀表板組合成單個(gè)現(xiàn)成的文檔。該MergeDocument方法僅將另一個(gè)模板中的報(bào)表頁面添加到主報(bào)表中。如果模板僅包含儀表板,則該方法將引發(fā)異常。在準(zhǔn)備合并模板時(shí)應(yīng)考慮到這一點(diǎn)。
功能
首先,確定哪個(gè)報(bào)告將嵌入到另一個(gè)報(bào)告非常重要,因?yàn)檫@會影響報(bào)告單元和頁面順序。請考慮以下代碼示例:
report1.MergeDocument(report2);report2 中的頁面將添加到 report1 的頁面之后,并轉(zhuǎn)換為 report1 的單元。
var report = StiReport.CreateNewReport(); report.LoadDocument("documents\\Invoice.mdc"); var report2 = StiReport.CreateNewReport(); report2.LoadDocument("documents\\Christmas.mdc"); report.MergeDocument(report2); report.Show();
但在某些情況下,您只需在一個(gè)地方下載、構(gòu)建和合并兩個(gè)報(bào)告模板。合并報(bào)告的示例代碼:
var report = StiReport.CreateNewReport(); report.Load("Reports\\Invoice.mrt"); var report2 = StiReport.CreateNewReport(); report2.Load("Reports\\Christmas.mrt"); report.Render(); report2.Render(); report.MergeDocument(report2); report.Show();
為了簡化代碼,您可以使用MergeDocument()具有兩個(gè)參數(shù)的方法重載,并將 true 作為第二個(gè)參數(shù)傳遞。這樣,兩個(gè)報(bào)告的呈現(xiàn)將在方法中自動處理。例如,使用 build 重載合并報(bào)告的代碼如下所示:
var report = StiReport.CreateNewReport(); report.Load("Reports\\Invoice.mrt"); var report2 = StiReport.CreateNewReport(); report2.Load("Reports\\Christmas.mrt"); report.MergeDocument(report2, true); report.Show();
如果要合并兩份以上的報(bào)告,請務(wù)必保持一致性,并記住使用主報(bào)告的單位。以下是合并三份報(bào)告的示例:
var report = StiReport.CreateNewReport(); report.Load("Reports\\Invoice.mrt"); var report2 = StiReport.CreateNewReport(); report2.Load("Reports\\Christmas.mrt"); var report3 = StiReport.CreateNewReport(); report3.Load("Reports\\Report3.mrt"); report.MergeDocument(report2, true); report.MergeDocument(report3, true); //report is containing a rendered pages of the report, report2 and report3 report.Show();
JavaScript 報(bào)告工具使用一種稱為 的異步合并方法mergeDocumentAsync()。總體而言,上述所有內(nèi)容都適用于此方法。報(bào)告頁面的合并及其呈現(xiàn)都是異步進(jìn)行的。因此,如果該mergeDocumentAsync()方法使用一個(gè)參數(shù),并且需要在合并之前構(gòu)建報(bào)告,renderAsync2()則應(yīng)在 JavaScript 中對它們調(diào)用該方法。例如,合并多個(gè)報(bào)告:
var report = StiReport.CreateNewReport(); report.Load("Reports\\Invoice.mrt"); var report2 = StiReport.CreateNewReport(); report2.Load("Reports\\Christmas.mrt"); await report.renderAsync2(); await report2.renderAsync2(); await report.mergeDocumentAsync(report2); viewer.report = report;
使用該mergeDocumentAsync(,)方法將多個(gè)模板合并為一份報(bào)告。
var report = StiReport.CreateNewReport(); report.Load("Reports\\Invoice.mrt"); var report2 = StiReport.CreateNewReport(); report2.Load("Reports\\Christmas.mrt"); await report.mergeDocumentAsync(report2, true); viewer.report = report;
這使得在查看、打印或?qū)С鲋昂喜?bào)告變得更加容易。
想要了解Stimulsoft Reports 報(bào)價(jià)信息的朋友,歡迎咨詢。
加入官方社群 740060302,歡迎相互交流
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn