之前也使用VS2019创建过rdlc报表,但是都没有系统的记录,将创建过程具体记录下来,如果有人刚好有类似的需求,按照如下步骤就可以轻松实现,一来能帮助需要之人,二来梳理知识点。
1. 创建一个WPF App
这个常规操作,创建一个WPF的项目,项目名称自己随便取。
2. 创建报表的数据模型
这些数据绑定到rdlc报表上展示的或打印的数据
创建一个数据模型类:
namespace WpfApp_Create_Report
{
public class Model
{
public int Id { get; set; }
public string TestPoint { get; set; }
public double TestValue { get; set; }
}
}
编译整个项目!
3.添加RDLC报表文件
名称
报表名称可以默认,也可以修改为自己喜欢的名称。
添加数据集
报表数据,新建
选数据源:对象
选择创建的数据模型类
4. 设计报表内容
5.添加必要的组件的引用
Microsoft.ReportViewer.WinForms,System.Windows.Forms,WindowsFormsIntegration
这个3个组件的添加到项目中
6.WPF UI设计
WPF 中需要引入.NET 组件的名称空间
xmlns:wf=“clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms”
xmlns:wfi=“clr-namespace:System.Windows.Forms.Integration;assembly=windowsformsintegration”
xmlns:rv=“clr-namespace:Microsoft.Reporting.WinForms;assembly=Microsoft.ReportViewer.WinForms”
布局设计如下:
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="\*"/>
</Grid.RowDefinitions>
<StackPanel Grid.Row="0" Margin="5">
<Button x:Name="btnLoadReportData" Click="btnLoadReportData\_Click">加载报表数据</Button>
</StackPanel>
<Grid Grid.Row="1" Margin="3">
<wfi:WindowsFormsHost >
<rv:ReportViewer x:Name="reportViewer"></rv:ReportViewer>
</wfi:WindowsFormsHost>
</Grid>
</Grid>
效果:
后台代码添加数据
private void btnLoadReportData_Click(object sender, RoutedEventArgs e)
{
this.reportViewer.LocalReport.ReportPath = "Report1.rdlc";
ReportDataSource reportData = new ReportDataSource("DataSet1", get\_DataSource());
this.reportViewer.LocalReport.DataSources.Add(reportData);
this.reportViewer.RefreshReport();
}
private List<Model> get\_DataSource()
{
return new List<Model>
{
new Model{Id=1, TestPoint="Voltage", TestValue=3.21},
new Model{Id=2, TestPoint="Current", TestValue=0.21},
new Model{Id=3, TestPoint="Vcc2", TestValue=0.987},
new Model{Id=4, TestPoint="LED", TestValue=1.23},
new Model{Id=5, TestPoint="Unload", TestValue=2.99}
};
}
运行: