Способы формирования (генераторы) отчетов на веб-сервере в asp.net (webForms, MVC)

Рассмотрены будут первые три способа формирования отчетов из таблицы, расположенной далее по тексту, доступные в среде asp.net:

Таблица 1. Список генераторов отчета

 
Crystal Reports for VS2010
Microsoft Report Viewer
шаблон Excel
FastReport
StimulSoft
Сайт
Лицензия
бесплатная
бесплатная
бесплатная
платная
Платная

 Данный обзор посвящен только бесплатным реализациям генерации отчетов.
Хотя имел возможность поработать с генератором от FastReport, правда в desktop- приложении. Впечатление – профессионально сделанный генератор отчетов. Отчеты делать удобно, и, следовательно, быстро.

Прилагаю скриншот интерфейса программы FastReport (версия 4.10.18):

Рисунок 1. Скриншот FastReport

 

Crystal Reports

Начнем с Crystal Reports. Внешний вид и API библиотеки за достаточно продолжительный (особенно по меркам ИТ) срок поменялся незначительно.
Функции генератора удовлетворят самого взыскательного клиента. Есть возможность экспорта в любой из желаемых форматов: PDF, Excel, Word.

Слабая сторона Crystal Reports – развертывание. Если вы программируете под Visual Studio 2010, вам потребуется инсталлировать RTE (real time engine) на веб-сервер - http://www.businessobjects.com/jump/xi/crvs2010/us2_default.asp, либо включить его в состав установочного пакета.

RTE устанавливает не все компоненты, поэтому, скорее всего, вам потребуется вручную скопировать из папки Crystal Reports содержимое директории wwwroot\aspnet_client\system_web\4_0_30319\crystalreportviewers13
(или в корень сайта). В частности, так решается проблема пустого листа (blank report)  в CrystalReportViewer, а также проблема с иконками в тулбаре компонента.

По умолчанию на shared-хостинге этот компонент обычно не установлен (был сделан запрос в две хостинг-компании), поэтому надо будет делать запрос в службу технической поддержки.

Crystal Reports работает только на webForms страницах. Чтобы включить его в проект MVC – добавьте aspx webForms страницы в ваш проект. Лучше организовать страницы webForms вместе с шаблонами Crystal Reports  в отдельную директорию. Кстати, заодно, обратите внимание на то, что шаблон («rpt») по умолчанию встраивается в бинарный файл проекта. На форуме Crystal Reports служба техподдержки делает заявление, что такой подход, оказывается, нежелателен. Поэтому опцию лучше выключить, и для Viewer просто указывать путь к шаблону.

Microsoft Report Viewer

Этот компонент выглядит скромнее, чем Crystal Reports, хотя в основном повторяет набор его функций.
Также работает только на страницах aspx webForms.
Для работы в Visual Studio необходимо скачать дистрибутив с сайта Microsoft.
Устанавливается на веб-сервер простым копированием.

Про развертывание приложения подробно расписано здесь:
http://msdn.microsoft.com/ru-ru/library/ms251723.aspx

DLL-ку Microsoft.ReportViewer.ProcessingObjectModel.dll можно "выдрать" WinRar-ом из установщика, ну или скопировать из кэша сборок.

Если у вас приложение MVC, то не стоит использовать директорию с названием "Reports" - при публикации на сервере я получил ошибку 503. После переименования папки все сразу заработало. Так и не разобрался, возможно где-то зарезервировано это имя.

Минус Microsoft Report Viewer – среднее качество выходных файлов (pdf, excel, word). Crystal Reports делает эти операции на порядок изящнее.

Если будете использовать Microsoft Report Viewer – обязательно выравнивайте наборы элементов по вертикали с помощью соответствующего инструмента.

Формирование отчета на основе шаблона Excel

Этот подход позволит вам получить на выходе совершенно предсказуемый результат. Здесь есть пара нюансов:
- не каждый хостер позволит вам работать с объектом Excel через interop.
- если использовать XML-формат таблицы (Open XML) – нет возможности включить в шаблон картинки и другие элементы Excel.

Попалась на глаза совершенно удивительная библиотека для работы с Excel Gemboxsoftware.com
У бесплатной версии есть несколько ограничений. Она позволяет включить в книгу Excel только 5 листов. И количество строк на одном листе ограничено восьмидесятью.

Теперь редактирование шаблона доступно обычному пользователю:

Рисунок 2. Шаблон Excel

С помощью этого подхода можно формировать обычные бланки, так и бланки с табличными областями, разворачивающиеся вправо и (или) вниз.

При работе с этой библиотекой выключите вывод предупреждения о приближении к достижению ограничения.

Чтобы картинки и другие объекты Excel сохранялись на листе включите эту опцию:
ef.LoadXlsx(fileNameIn, XlsxOptions.PreserveKeepOpen);


Библиотека маленькая по размеру, устанавливается в проект копированием и добавлением ссылки на неё.
Документация подробная и удобная.
Есть возможность экспорта Excel в HTML.
 

В заключение

приведу сравнительную характеристику описанных решений:


Таблица 2. Сравнительная характеристика (максимум 10)

 
Crystal Reports for VS2010
Microsoft Report Viewer
Формирование отчета на основе шаблона Excel
Удобство развертывания на веб-сервере
4 (из 10)
6
10
Удобство формирования отчетов
8
7
8
Качество отчета
8
6
8
Итого:
20
19
26

 

Хороших вам и вашим клиентам отчетов!


Комментарии

  • [19.04.2013] Fast-report не поддерживается в веб проектах, только в win формах

  • [28.08.2015] Еще вариант - генерировать печатную форму сразу в HTML. Что скажете по такому варианту?

  • [07.10.2015] Мне кажется при желании можно Fast-Report прикрутить в качестве генератора отчетов.

  • [07.10.2015] JasperReports Server - автономный и встраиваемый сервер генерации отчетов. Он обеспечивает генерацию отчетов и аналитику, которая может быть включена в веб-приложение или мобильное приложение, а также действовать в качестве центрального информационного центра для предприятия, обеспечивая задачи обработки информации или по запланированной схеме, или в реальном времени через браузер, мобильное устройство, принтер или почтовый ящик во множестве форматов файла. Сервер JasperReports оптимизирован, чтобы обеспечить, и централизованно управлять отчетами JqsperSoft и аналитическими формами.

  • [27.01.2016] Здесь написано что FastReport отлично работает с ASP.NET https://www.fastreport.ru/ru/download/

  • [15.03.2016] "Здесь написано что FastReport отлично работает с ASP.NET https://www.fastreport.ru/ru/download/" мы купили FastReport в итоге на их форуме нашел информацию что не поддерживается в веб разработке.

  • [27.05.2016] Crystal Reports по прежнему рулит. Все ж таки стандарт в отчетостроении, как никак. Пользуемся с 2004 года им! Интересные и полезные статьи )

  • [18.10.2016] FastReport отлично работает в WebForms. Делал отчеты на сайте с помощью него еще лет 5 назад.

Ваш комментарий:

Сколько будет 2 + 2 ?