Предисловие: Данная статья написана после неудачной попытки быстро создать простенький отчет для маленького проекта, используя контрол ReportViewer в WPF. Найденные статьи были либо устаревшие, либо трудноусваемые.
https://yadi.sk/d/Vs0iw4ccMz04Mw - ссылка на скачивание образца;
https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2010/ms255056(v%3Dvs.100) - MSDN;
http://wladm.narod.ru/C_Sharp/ReportViewer.html - Сайт Wlada;
https://www.c-sharpcorner.com/article/rdlc-report-using-wpf-and-c-sharp/ - C# Corner;
https://www.c-sharpcorner.com/article/install-rdlc-extensions-in-visual-studio-2017/ - C# Corner;
https://www.youtube.com/watch?v=T60uw33fS04
В Visual Studio c 2015 года отсутствует дизайнер отчетов Microsoft RDLC
1 УСТАНОВКА
1.1 Установка Microsoft RDLC Report Designer
Для установки Microsoft RDLC Report Designer в созданном проекте нужно раскрыть вкладку «Расширения» и выбрать пункт «Управление расширениями»
В открывшемся окне «Управления расширениями» воспользоваться строкой для поиска, указав MicrosoftRDLC. В результатах поиска выбрать расширение Microsoft RDLC Report Designer и нажать кнопку «Скачать»
Начнется скачивание расширения.
После скачивания расширения Visual Studio необходимо закрыть, тогда начнется установка расширения :
Соглашаемся с вносимыми изменениями нажав “Modify”
Начнется завершающий этап установки расширения:
В завершении закрываем окно сообщающее о успешной установке:
Теперь в Visual Studio можно использовать Microsoft RDLC Report Designer
1.2 Установка дополнительных библиотек и ссылок
Следующим шагом нужно добавить контрол ReportViewer в панель инструментов. Для этого откройте диспетчер пакетов NuGet щелкнув ПКМ по названию вашего решения и выберите пункт "Управление пакетами NUGet..."
и скачайте следующие пакеты:
- Microsoft.ReportViewer.common
- Microsoft.ReportViewer.Winforms
Выбрать каждый из них и нажать на кнопку установить
Добавление ссылки на пространства имен Windows FormsIntegration В обозревателе решений щелкните правой кнопкой мыши узел «Ссылки» и выберите пункт меню «Добавить ссылку».
Выберите файл WindowsFormsIntegration поставив галочку и нажмите кнопку «ОК».
Пересоберите решение
2 Данные отчета
2.1 Настройка источника данных и набора данных
Для созданного отчета нужно добавить источник данных и определить набор данных.
- В Visual Studio источник данных относится к объектам .NET, которые подключаются к хранилищу данных и делают данные доступными для приложения.
- Набор данных — это набор объектов, которые хранят данные из базы данных в памяти и поддерживают отслеживание изменений, чтобы обеспечить выполнение операций создания, чтения, обновления и удаления (CRUD) с этими данными без необходимости постоянного подключения к базе данных.
Отобразим панель «Данные отчета». Способы отображения панели:
- Вкладка «Вид» пункт данные отчета;
- Нажатие горячих клавиш CTRL+ALT+D.
В панели "Данные отчета" щелкнуть ПКМ по пункту «Наборы данных» в появившемся контекстом меню выбрать «Добавить набор данных…»
После чего автоматически будет открыт "Мастер настройки источника данных" для настройки источника данных. Из предложенных типов выбираем «База данных»
Выбираем «Набор данных» и жмем далее
Создаем новое подключение к базе данных
Изменяем тип источника данных. (Если по умолчанию не выбран тип источника этот шаг будет пропущен, а сразу отобразится окно как на Рисунке 23)
В нашем примере используется файл базы данных Access
Указываем путь до файла базы данных и жмем ОК
В выпадающий список добавиться наша выбранная база данных
Далее Visual Studio предложит скопировать файл БД в папку вашего проекта.
Далее выбираем объекты БД которые в дальнейшем будут использоваться как набор данных и указываем имя источника данных
И в завершении создаем набор данных указав ему имя, выбрав источник данных и выбрав из выпадающего списка доступный набор даных.
В результате проделанных действий на панели "Данные отчета" должно отображаться следующее
2.2 Добавление элемента на отчет и его заполнение
Отобразим панель элементов
- Вкладка вид - пункт Панель элементов
- Горячие клавиши Ctrl+Alt+X
В панели элементов выберем таблицу и добавим на конструктор отчета
Введите соответствующий заголовок для таблицы в верхний колонтитул и сопоставьте их с правильными свойствами, как показано ниже.
3 Связь отчета с формой
в MainWindow.xaml нужно добавить новое пространство имен xmlns:ReportViewerRDLC="clr-namespace:Microsoft.Reporting.WinForms;assembly=Microsoft.ReportViewer.WinForms"
и следующую разметку
<Grid>
<WindowsFormsHost>
<ReportViewerRDLC:ReportViewer x:Name="MyReportViewer"/>
</WindowsFormsHost>
</Grid>
using Microsoft.Reporting.WinForms;
using System;
using System.Data;
using System.Data.OleDb;
using System.Windows;
namespace WpfApp1
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
DataSet MyDataSet = new DataSet();
string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Users\drago\source\repos\WpfApp1\Education.mdb";
string sSql = "Select * from Student";
using (OleDbConnection oleConn = new OleDbConnection(connectionString))
{
try
{
oleConn.Open();
OleDbCommand olecmd = new OleDbCommand(sSql, oleConn);
olecmd.CommandType = CommandType.Text;
OleDbDataAdapter da = new OleDbDataAdapter(olecmd);
da.Fill(MyDataSet);
}
catch (Exception exMessage)
{
MessageBox.Show(exMessage.Message);
}
}
MyReportViewer.ProcessingMode = ProcessingMode.Local; MyReportViewer.LocalReport.ReportPath = @"C:\Users\drago\source\repos\WpfApp1\Report1.rdlc";
MyReportViewer.LocalReport.DataSources.Add(new ReportDataSource("DataSet_Student", MyDataSet.Tables[0]));
MyReportViewer.SetDisplayMode(DisplayMode.PrintLayout);
MyReportViewer.RefreshReport();
}
}
}
Запустим приложение