Как объединить несколько отчетов в один

13.07.2020

У многих разработчиков отчетов бывали ситуации, когда в отчет нужно было добавить страницу, которая уже была реализована в другом отчете. И вам приходилось дорабатывать существующий отчет - добавлять новую страницу, источники данных. Не все знают, что можно просто объединить отчеты во время их отображения.

С проблемой объединения отчетов столкнулся и пользователь генератора отчетов Stimulsoft:

https://stackoverflow.com/questions/43569668/stimulsoft-view-multiple-reports-inside-stiviewer

I am using Stimulsoft libraries to create reports (StiReport control) and then showing it inside a StiViewer control. the problem is when i assign multiple reports to the viewer, it does not refresh or display the contents but it works just fine if i only set 1 report to the viewer.

User issue

К счастью, пользователь нашел штатный способ объединения отчетов. Пользователям FastReport.net наверняка было бы интересно узнать, как сделать это в своем генераторе отчетов.

Давайте рассмотрим код:

1
2
3
4
5
6
7
8
9
10
11
Report report = new Report();
 DataSet data = new DataSet();
 data.ReadXml("K:/My documents/nwind.xml");
 report.RegisterData(data);
 report.Load("K:/My documents/Master-Detail.frx");
 report.Prepare();
 report.Load("K:/My documents/Highlight.frx");
 report.Prepare(true);
 report.Load("K:/My documents/Barcode.frx");
 report.Prepare(true);
 report.ShowPrepared();

Как видите, мы последовательно загружаем три разных отчета в один и тот же объект отчета.

При этом, после каждой загрузки отчета, нужно выполнить построение отчета методом Prepare(). Но, как вы заметили, для второго и третьего отчета мы использовали этот метод с параметром Prepare(true). Этот параметр говорит о том, что при построении нужно добавлять страницы к существующим, а не очищать перед добавлением. А теперь, запустим приложение и посмотрим на отчет:Combined reports

Как мы видим – все три отчета выведены друг за другом. Более, того, при таком способе объединения отчетов нумерация страниц сквозная. Например, в последнем отчете выводится номер страницы 4 внизу:

Numbering range works for combined reports

 

Таким образом, вы можете объединять отчеты незаметно для пользователя. В зависимости от требуемого контента можно создавать разные сборки из отчетов. Получается нет необходимости создавать большие и сложные многостраничные отчеты. Можно поручить разным людям создание нескольких простых отчетов и в конце, при отображении, объединить их. Да, при этом у вас будет несколько шаблонов, но файл подготовленного отчета в формате fpx будет один.

.NET FastReport Отчет .NET FastReport Отчет
16 октября 2026

Новые возможности .NET 11: обзор C# 15, EF Core 11, ASP.NET Core и производительности

Обзор .NET 11: C# 15, union-типы, новая модель безопасности памяти, Windows Forms, EF Core 11, ASP.NET Core и Blazor, ускорение Runtime и NativeAOT.
12 октября 2026

Подключение к базе данных Greenplum Database в FastReport .NET

Узнайте, как подключить Greenplum Database к FastReport .NET: сборка плагина на Npgsql, интеграция в дизайнер отчётов и регистрация коннектора в C#‑коде приложения.
12 октября 2026

Экспорт отчёта в XML из Preview в FastReport .NET

Узнайте, как сохранить отчёт в формате XML в FastReport .NET: экспорт из Preview без кода и программный экспорт через XMLExport с настройкой параметров.

Не является публичной офертой
© 1998-2026 ООО «Быстрые отчеты»