报表控件Stimulsoft 中如何将多份报告合并为一份

Stimulsoft Ultimate (原Stimulsoft Reports.Ultimate)是用于创建报表和仪表板的通用工具集。该产品包括用于WinForms、ASP.NET、.NET Core、JavaScript、WPF、PHP、Java和其他环境的完整工具集。无需比较产品功能,Stimulsoft Ultimate包含了所有内容!

有时,人们会联系我们的技术支持,询问一个常见问题:如何正确地将多份报告合并为一份,尤其是在导出之前。虽然这在技术上很简单,但仍有一些选项需要考虑。例如,在合并报告时如何管理不同的度量单位或页码。没有通用的解决方案,因为它取决于报告创建者的具体目标和目的。为了说明如何将多份报告合并为一份,我们为JS和.NET开发了几个示例。

Stimulsoft Reports官方正版下载(qun:740060302)icon-default.png?t=N7T8https://www.evget.com/product/2398/download   

MergeDocument() 方法

即使是小代码,也很容易出错。为了简化流程,我们MergeDocument()在 StiReport 类中添加了一个用于合并报表的方法。在 JavaScript 报表工具中,此方法称为mergeDocumentAsync()。

该方法以报表作为输入,其页面将添加到当前报表中。它还有一个重载,接受布尔值作为第二个参数,以确定是否需要预先构建报表。这允许在一行中合并两个 StiReport 对象:report.MergeDocument(report2, true)。

  • 使用此合并方法时,会自动处理以下因素:
  • 嵌入报告的计量单位被转换为与主报告的计量单位相匹配;
  • 缓存得到正确管理;
  • 书签已复制。
使用仪表板的功能

使用仪表板的模板文件可以同时包含报表页面和仪表板。但是,仪表板不是静态对象,没有固定的尺寸。虽然仪表板有一个Render()方法,但它只是一个占位符,不能像报表那样构建。仪表板的具体尺寸只能在导出期间设置,因此无法将报表和仪表板组合成单个现成的文档。该MergeDocument方法仅将另一个模板中的报表页面添加到主报表中。如果模板仅包含仪表板,则该方法将引发异常。在准备合并模板时应考虑到这一点。
功能

方法的实际应用

首先,确定哪个报告将嵌入到另一个报告非常重要,因为这会影响报告单元和页面顺序。请考虑以下代码示例:

report1.MergeDocument(report2);

report2 中的页面将添加到 report1 的页面之后,并转换为 report1 的单元。

因此,尽管在两种情况下使用相同的报告,命令report1.MergeDocument(report2)和report2.MergeDocument(report1)将产生两个不同的文档作为输出。

另一个重要方面涉及报告的构建。
通常,需要合并已构建的报告。例如,报告可能在应用程序的不同部分作为单独的部分创建,然后需要将它们合并为一份最终报告。

另一种常见方法是在一个地方创建报告,但将它们作为完成的文档保存在磁盘或数据库中。换句话说,首先积累报告,然后将其合并为一份。在这种情况下,代码可能如下所示:

var report = StiReport.CreateNewReport();
report.LoadDocument("documents\\Invoice.mdc");
var report2 = StiReport.CreateNewReport();
report2.LoadDocument("documents\\Christmas.mdc");

report.MergeDocument(report2);

report.Show();

但在某些情况下,您只需在一个地方下载、构建和合并两个报告模板。合并报告的示例代码:

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()具有两个参数的方法重载,并将 true 作为第二个参数传递。这样,两个报告的呈现将在方法中自动处理。例如,使用 build 重载合并报告的代码如下所示:

var report = StiReport.CreateNewReport();
report.Load("Reports\\Invoice.mrt");
var report2 = StiReport.CreateNewReport();
report2.Load("Reports\\Christmas.mrt");

report.MergeDocument(report2, true);

report.Show();

如果要合并两份以上的报告,请务必保持一致性,并记住使用主报告的单位。以下是合并三份报告的示例:

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 报告工具使用一种称为 的异步合并方法mergeDocumentAsync()。总体而言,上述所有内容都适用于此方法。报告页面的合并及其呈现都是异步进行的。因此,如果该mergeDocumentAsync()方法使用一个参数,并且需要在合并之前构建报告,renderAsync2()则应在 JavaScript 中对它们调用该方法。例如,合并多个报告:

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(,)方法将多个模板合并为一份报告。

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;

这使得在查看、打印或导出之前合并报告变得更加容易。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值