Генератор отчетов FastReport.NET

На рынке генераторов отчетов для платформы .Net появился новый игрок – FastReport.Net от компании Fast Reports. Компания разрабатывает генераторы отчетов уже много лет. Ее продукт Fast Reports VCL является одним из самых популярных генераторов отчетов для Delphi/C++ Builder. И вот теперь – решение для .Net.
 Генераторы отчетов – это специальный класс программ и программных компонентов, решающих задачу предоставления пользователям информации в удобном виде. Как только появляется необходимость создавать отчеты, сразу же возникает потребность в хорошем генераторе отчетов. В результате генераторов отчетов уже создано великое множество – под разные платформы, среды разработки, языки программирования и т. д.

Тенденция такова, что в настоящее время все больше программистов переводят свои продукты на платформу Microsoft .NET Framework. Соответственно, появилась необходимость в генераторе отчетов, написанном именно под эту платформу. Ведь только специально написанные под .Net компоненты способны максимально эффективно использовать все преимущества, предоставляемые этой платформой.

FastReport.Net написан на C#, на 100%-ном управляемом коде. Он рассчитан на создание отчетов под Windows Forms и ASP.NET в Microsoft Visual Studio и ориентирован на .Net версии 2.0 и выше.

Новый генератор очень похож на Fast Reports VCL. Та же структура отчета, те же бэнды, аналогичные элементы управления и синтаксис выражений. Многостраничные отчеты, дизайнер в стиле MS Office, прямое подключение к базам данных, возможность создавать автономные отчеты, независящие от приложения, наследование отчетов, интерактивные отчеты, поддержка скриптовых языков и т. д.

Есть и ряд интересных отличий, обусловленных в первую очередь спецификой платформы. В FastReport.Net введена поддержка нереляционных источников данных, реализующих интерфейс IEnumerable, в качестве скриптового языка теперь используются C# и VB.NET. Появилась возможность сохранения готовых отчетов в виде класса C#/VB.NET, добавлен новый, более компактный режим просмотра бэндов и т. д.

Рассмотрим возможности генератора поподробнее.

Дизайнер отчета
Ключевым компонентом FastReport.Net является дизайнер отчета. Дизайнер имеет классический вид – рабочая область отчета, дерево данных, дерево компонентов отчета, панель со свойствами выбранного компонента и т. д. По структуре он напоминает дизайнер Fast Reports VCL, только внешний вид и поведение компонентов соответствуют стандартам Microsoft Visual Studio, а не Delphi

FastReport.Net – бэнд-ориентированный генератор отчетов. Бэнд – это элемент управления, который размещается на странице отчета и является контейнером для остальных элементов управления. В FastReport.Net тринадцать типов бэндов. По два для отчета, страниц, колонок и групп (заголовки, подвалы). Три для данных – бэнд “данные”, подвал данных и заголовок данных. И есть еще два отдельных бэнда – дочерний и фоновый.

Структура бэндов отчета настраивается через меню “Отчет”. Меню позволяет одним щелчком мыши включать или отключать те бэнды, которые в отчете могут встречаться лишь один раз. Остальные операции по редактированию структуры выполняются в окне “Настройка бэндов”. Здесь можно добавлять дочерние бэнды, группы, задавать вложенность бэндов “данные”, порядок следования бэндов и т. д.

Дизайнер поддерживает два режима отображения бэндов – классический (как в Fast Reports VCL) и компактный. В классическом режиме бэнды рисуются с заголовком. В компактном режиме заголовков нет – названия бэндов отображаются в левой части рабочей области. Компактный режим в работе удобнее – структура отчета четко видна, сам отчет выглядит гораздо нагляднее. Но у него есть недостаток – отчет становится шире. Так что для комфортной работы требуется монитор побольше.

FastReport.Net позволяет размещать в бэндах объекты следующих типов: “Текст”, “Форматированный текст”, “Рисунок”, “Линия”, “Штрих-код”, “Флажок”, “Таблица”, “Матрица”, “Вложенный отчет”, “Диаграмма”, а также самостоятельно созданные элементы управления.

Привязка объектов к данным выполняется с помощью выражений. Типичный пример выражения “[Имя источника данных.Имя поля]”. Вручную писать текст подобных выражений не требуется – достаточно пару раз щелкнуть мышкой.

Возможности выражений не ограничиваются функцией обращения к полям данных источников данных. Выражение – это строка кода на скриптовом языке. С помощью выражений можно обращаться к системным переменным, параметрам отчета, получать итоговые значения, вызывать функции Net и т. д.

Поддержка диаграмм в FastReport.Net реализована с помощью бесплатной библиотеки Microsoft Chart. Эта библиотека может использоваться начиная с Net 3.5SP1. Она будет входить в состав Net 4.0, а пока ее нужно устанавливать отдельно.

Типы отчетов

FastReport.Net позволяет создавать все основные типы отчетов: master-detail, master-master, перекрестные таблицы и т. д.

Отчеты могут быть многоколончатыми, причем многоколончатыми могут быть сделаны как страницы, так и отдельные бэнды.

Отчеты могут быть многостраничными. Такая возможность идеальна для создания всякого рода буклетов, у которых титульные и последние страницы имеют специальное оформление, а у четных и нечетных страниц различаются поля и колонтитулы.

FastReport.Net позволяет создавать вложенные отчеты. Вложенный отчет размещается на бэнде как обычный объект. При этом для каждого вложенного отчета создается отдельная страница. Вложенные отчеты могут быть крайне полезными. Например, расположив рядом два объекта “Вложенный отчет”, можно напечатать два независимых списка данных, расположенных рядом друг с другом (side-by-side).

Вложенный отчет может содержать вложенные отчеты. Иерархия вложенности может быть очень сложной. Однако слишком сложная иерархия усложнит отчет, в нем будет трудно разобраться. То же самое касается отчетов master-detail. В FastReport.Net можно создавать отчеты master-detail-detail и вообще добавлять неограниченное количество подчиненных бэндов. Но, опять же, увлекаться не стоит.

Новые отчеты в FastReport.Net создаются с помощью мастера. Мастер стандартного отчета позволяет задать источники данных для отчета, выбрать отображаемые поля, задать критерии группировки, указать стиль отчета. Несколько кликов мыши – и “рыба” отчета готова.

Интересной возможностью FastReport.Net является возможность группировки данных. Обычный отчет master-detail требует два связанных между собой источника данных. С помощью групп можно создавать подобные отчеты, используя только один источник данных. Единственное условие – данные в источнике должны быть отсортированы по тому полю, по которому ведется группировка.

Отчеты в FastReport.Net можно делать интерактивными, т. е. реагирующими на щелчки мыши. Поддерживаются два вида взаимодействия с пользователем:

  • при нажатии на бэнд или объект может выполняться какое-либо действие, например выводиться детальные отчеты в отдельном окне;
  • сбоку окна просмотра может отображаться структура отчета, с помощью которой можно выполнять навигацию по отчету.

В отчетах могут использоваться диалоговые окна. Диалог – это окно с элементами управления, которое показывается в момент запуска отчета. Диалоги можно использовать для ввода параметров отчета или для выбора параметров фильтрации данных.

Построенный отчет можно посмотреть на экране, распечатать на принтере или экспортировать в один из поддерживаемых форматов. Все это делается в окне предварительного просмотра. Поддерживается экспорт в форматы RTF, HTML, PDF, Excel, Open Office Calc. Можно также сохранять отчеты в их “родном” формате FPX (XML, сжатый с помощью ZIP).

Источники данных

Данные для формирования отчета поступают в FastReport.Net из источников данных. Источники задаются одним из двух способов: нужно либо зарегистрировать в отчете источник данных из вашего приложения, либо создать источник данных прямо в отчете.

Регистрация источника данных выполняется программно. Если в качестве источника используется размещенный на форме компонент DataSet, то регистрацию можно выполнять мышкой в дизайнере форм. Для программно созданных источников придется в коде программы вручную вызывать функцию RegisterData.

Если вы создаете отчет, который будет работать независимо от приложения, то источник данных нужно задавать прямо в отчете. FastReport.Net способен подключаться напрямую к большинству современных СУБД, включая MS SQL, Oracle, VistaDB, Postgres, Access, а также считывать данные из XML-файлов (можно запрограммировать и другие типы подключений). В качестве параметров источника задается имя таблицы базы данных или текст SQL-запроса.

FastReport.Net поддерживает два типа источников данных: реляционные и иерархические. С реляционными все понятно – это таблицы ADO.NET. Иерархические – это коллекции произвольных объектов, поддерживающие интерфейс IEnumerable. Объекты в подобных коллекциях могут иметь сколь угодно сложную структуру. В частности, они могут содержать в себе коллекции других объектов, те, в свою очередь, другие коллекции и т. п. В результате такой источник может выглядеть как сложная иерархия объектов. Отсюда название – “иерархический”.

Иерархические источники дают хорошую возможность выводить в отчете данные, которые хранятся в приложении не в виде реляционных таблиц, а в виде произвольных списков объектов. К сожалению, работать с ними не слишком удобно. Иерархические источники в отчете можно регистрировать только программно, поэтому при разработке отчета в Visual Studio эти источники не видны. Проблему можно обойти, если редактировать отчет из работающего приложения, которое уже зарегистрировало в отчете все необходимые источники.

Скрипты

В качестве скриптового языка в FastReport.Net используются на выбор C# или VB.Net.

В дизайнере отчета на вкладке “Код” объявлен главный класс скрипта отчета. Здесь задаются обработчики событий объектов отчета. Здесь же можно создавать собственные классы, переменные, методы, свойства и т. п.

В коде скрипта можно обращаться к объектам отчета по именам как к свойствам класса. Предусмотрен синтаксис для обращения к любым объектам: элементам управления, источникам данных, параметрам отчета и т. п. В скрипте допускается использовать любые сборки, нужно лишь подключить их в свойствах отчета.

Скрипты позволяют выполнять нестандартную обработку данных, управлять печатью страниц отчета и бэндов на странице, формировать динамические таблицы и т. д. Процесс печати бэндов детально изложен в документации. С помощью скрипта, используя события разных объектов, можно контролировать практически каждый момент формирования отчета.

Редактор скриптов поддерживает общепринятый набор функций: IntelliSense, подсветку синтаксиса, всплывающие подсказки для элементов кода, динамическую проверку корректности синтаксиса кода программы. Чего не хватает – это средств отладки кода. Не предусмотрено даже специально команды “компиляции” или проверки корректности кода скрипта. Правда, для этих целей можно пользоваться командой предпросмотра, при выполнении которой скрипт компилируется.

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

Интеграция с Visual Studio

FastReport.Net добавляет на панель компонентов Visual Studio три новых компонента:

  • Report - компонент отчета;
  • PreviewControl – визуальный компонент, реализующий возможность просмотра отчета;
  • EnvironmentSettings – с его помощью можно задавать ряд глобальных настроек отчета, реализовывать в отчете собственные диалоги открытия/сохранения файла, передавать в отчет строку коннекта и т. д.

По умолчанию созданные отчеты можно автоматически сохранять в ресурсах приложения. Другой вариант хранения отчетов – в виде отдельных FPX-файлов. Третий – сохранять отчет в виде класса C# или VB.NET и включать его в код приложения.

Размеры сборок

Вместе с приложением, использующим FastReport.Net, потребуется распространять следующие сборки:

  • FastReport.dll (2 мб) – основная библиотека FastReport.Net;
  • FastReport.Dock.dll (0,3 Мб) – библиотека для организации плавающих окон;
  • FastReport.Editor.dll (1,5 Мб) – редактор кода с подсветкой синтаксиса. Эта библиотека не нужна, если ваше приложение не использует дизайнер отчетов;
  • FastReport.MSChart.dll (3,8 Мб) – эта сборка потребуется, только если вы используете в отчетах диаграммы.

По нынешним меркам генератор имеет компактные размеры.

Системные требования

Microsoft .Net Framework 2.0 или выше.
Visual Studio 2005/2008.
Windows Forms/ASP.NET.
Текущая версия генератора 1.0.186.

Конкуренты

Report Sharp-Shooter, Stimulsoft Reports.Net

Выводы

FastReport.Net – очень интересный вариант генератора отчетов. Разработчики не подкачали – генератор обладает отличным набором функций, удобен, компактен и быстр в работе. С информацией по продукту проблем нет. Вместе с демонстрационной версией поставляется тестовое приложение, которое позволяет оценить все возможности FastReport.Net. На сайте производителя доступны документация, SDK и форум.

Из недостатков я бы отметил отсутствие средств отладки скриптов. Но это, пожалуй, общая проблема всех генераторов отчетов для .Net – скрипты хранятся в отчетах в виде исходных текстов и компилируются непосредственно при создании отчета. И еще – генератор поддерживает только Microsoft Visual Studio, поддержки Delphi/C++ Builder пока не заявлено.

Автор статьи: Виктор Деревянко
Первоисточник: www.softkey.info

Comments are closed.