彩票走势图

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

翻译|行业资讯|编辑:胡涛|2024-06-13 09:40:33.010|阅读 9 次

概述:有时,人们会联系我们的技术支持,询问一个常见问题:如何正确地将多份报告合并为一份,尤其是在导出之前。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

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

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

Stimulsoft Reports官方正版下载   

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;

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


想要了解Stimulsoft Reports 报价信息的朋友,欢迎咨询。

加入官方社群 740060302,欢迎相互交流


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@capbkgr.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
相关产品
Stimulsoft Reports.Net

一个基于.NET框架的报表生成器,能够帮助你创建结构、功能丰富的报表。报表设计器界面友好,使用便捷,让你轻松创建所有报表。

Stimulsoft Reports.Web

第一款可以直接在Web中编辑报表的报表生成工具

Stimulsoft Reports.Wpf

针对wpf用户界面架构开发的报表工具,无需上网,即能轻松实现控件所有功能

Stimulsoft Ultimate

用于创建报表和仪表板的通用工具集,支持多种报表导出格式,拥有简单且强大的报表引擎

title
title
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP