Использование отчетов при разработке приложений MVC

12.08.2017

Если вы создаете свой веб проект по шаблону MVC возникает резонный вопрос – как использовать web-отчеты FastReport.Net?

В этой статье я расскажу вам об этом. Так как в архитектуре MVC отображение отделено от логики, использовать визуальный компонент WebReport не получится. Придется работать с отчетом в коде контроллера, а затем передавать в представление (view). Для примера я использовал стандартное веб приложение MVC. Для начала подключаем нужные библиотеки к проекту:

  • FastReport.dll;
  • FastReport.Web.dll.

Их можно найти в папке с приложением FastReport.Net.

Я решил разместить отчет на странице сайта Home. Поэтому работать с отчетом будем в HomeController.cs.

Объявляем библиотеки:

1
2
3
4
5
6
7
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using FastReport.Web;
using System.Web.UI.WebControls;

И для метода Index() добавляем следующий код:

1
2
3
4
5
6
7
8
9
10
11
12
public ActionResult Index()
 {
 WebReport webReport = new WebReport();
 
 string report_path = "C:\\Program Files (x86)\\FastReports\\FastReport.Net\\Demos\\Reports\\";
 System.Data.DataSet dataSet = new System.Data.DataSet();
 dataSet.ReadXml(report_path + "nwind.xml");
 webReport.Report.RegisterData(dataSet, "NorthWind");
 webReport.Report.Load(report_path + "Simple List.frx");
 ViewBag.WebReport = webReport;
 return View();
 }

Рассмотрим подробнее. В первой строке мы создаем экземпляр класса WebReport.

Далее создаем переменную для хранения пути к папке с отчетами. Для нашего отчета потребуются данные, поэтому мы создаем dataset и загружаем в него xml базу данных.

Теперь необходимо зарегистрировать источник данных в объекте отчета с помощью метода RegisterData(). Используем метод Load() для загрузки шаблона отчета.

ViewBag представляет собой обертку вокруг объекта ViewData, и предназначен для передачи данных из контроллера в представление. В данном случае мы будем передавать отчет в представление Index, которая по сути является страницей Home.

Переходим к представлению:

Код страницы будет таким:

1
2
3
4
@{
 ViewBag.Title = "Home Page";
}
@ViewBag.WebReport.GetHtml()

Я убрал ненужное и оставил лишь заголовок страницы и собственно наш отчет, представленный в формате HTML.

То есть для отображения отчета на странице достаточно лишь добавить код: @ViewBag.WebReport.GetHtml()

Соответствующий этой странице контроллер передаст в нее отчет.

В инициализации представления нужно подключить скрипты:    

1
2
3
4
5
6
7
<head>

@WebReportGlobals.Scripts()
@WebReportGlobals.Styles() 

</head> 

В нашем случае в файл _Layout.cshtml:

 

Осталось лишь подправить Web.config который лежит в папке Views.

Добавляем пространства имен для веб отчетов:

1
2
3
4
5
 <namespaces>

 <add namespace="FastReport" />
 <add namespace="FastReport.Web" />
 </namespaces>

В корне проекта есть еще один Web.config. В него добавляем обработчик:

1
2
3
4
 <handlers>

 <add name="FastReportHandler" path="FastReport.Export.axd" verb="*" type="FastReport.Web.Handlers.WebExport"/>
 </handlers>

Запускаем приложение и получаем наш отчет:

Таким образом, можно использовать веб отчеты и в проектах MVC. 

20 ноября 2024

Локализация и смена языков в FastReport VCL

FastReport VCL поддерживает 40 языков для локализации интерфейса и позволяет изменять язык на лету через меню или код, без перекомпиляции.
1 ноября 2024

Новые возможности редактора отчетов FastReport VCL

Рассматриваем новые возможности редактора отчетов: выносные линии, подсветка пересекающихся объектов, обновлённые деревья отчетов и данных.
30 октября 2024

Использование стилей при создании отчетов в FastReport VCL

В статье подробно рассматривается одна из новых возможностей FastReport VCL – применение стилей и страниц стилей.