报表生成器FastReport .Net如何使用代码创建报告

FastReport .Net是适用于Windows Forms,ASP.NET,MVC和.NET Core的全功能报表解决方案。它可以在Microsoft Visual Studio 2005-2019中使用。支持.Net Framework 2.0-4.x,.NET Core 3.0及以上版本。

在FastReport .NET 2021.1的新版本中,我们实现了对.NET 5的支持。添加了新条形码-Deutsce Post Leitcode。将RTF转换为报告对象的算法已得到显着改进。并且还添加了用于转换数字的新功能。

立即点击下载FastReport.NET v2021.1最新版

使用代码创建报告

让我们考虑如何在代码中创建一个报表。我们将创建以下报表。
在这里插入图片描述

 Report report = new Report();
// register the "Products" table
report.RegisterData(dataSet1.Tables["Products"], "Products");
// enable it to use in a report
report.GetDataSource("Products").Enabled = true;
// create A4 page with all margins set to 1cm
ReportPage page1 = new ReportPage();
page1.Name = "Page1";
report.Pages.Add(page1);
// create ReportTitle band
page1.ReportTitle = new ReportTitleBand();
page1.ReportTitle.Name = "ReportTitle1";
// set its height to 1.5cm
page1.ReportTitle.Height = Units.Centimeters * 1.5f;
// create group header
GroupHeaderBand group1 = new GroupHeaderBand();
group1.Name = "GroupHeader1";
group1.Height = Units.Centimeters * 1;
// set group condition
group1.Condition = "[Products.ProductName].Substring(0, 1)";
// add group to the page.Bands collection
page1.Bands.Add(group1);
// create group footer
group1.GroupFooter = new GroupFooterBand();
group1.GroupFooter.Name = "GroupFooter1";
group1.GroupFooter.Height = Units.Centimeters * 1;
// create DataBand
DataBand data1 = new DataBand();
data1.Name = "Data1";
data1.Height = Units.Centimeters * 0.5f;
// set data source
data1.DataSource = report.GetDataSource("Products");
// connect databand to a group
group1.Data = data1;
Working with Windows.Forms 23
// create "Text" objects
// report title
TextObject text1 = new TextObject();
text1.Name = "Text1";
// set bounds
text1.Bounds = new RectangleF(0, 0,
Units.Centimeters * 19, Units.Centimeters * 1);
// set text
text1.Text = "PRODUCTS";
// set appearance
text1.HorzAlign = HorzAlign.Center;
text1.Font = new Font("Tahoma", 14, FontStyle.Bold);
// add it to ReportTitle
page1.ReportTitle.Objects.Add(text1);
// group
TextObject text2 = new TextObject();
text2.Name = "Text2";
text2.Bounds = new RectangleF(0, 0,
Units.Centimeters * 2, Units.Centimeters * 1);
text2.Text = "[[Products.ProductName].Substring(0, 1)]";
text2.Font = new Font("Tahoma", 10, FontStyle.Bold);
// add it to GroupHeader
group1.Objects.Add(text2);
// data band
TextObject text3 = new TextObject();
text3.Name = "Text3";
text3.Bounds = new RectangleF(0, 0,
Units.Centimeters * 10, Units.Centimeters * 0.5f);
text3.Text = "[Products.ProductName]";
text3.Font = new Font("Tahoma", 8);
// add it to DataBand
data1.Objects.Add(text3);
// group footer
TextObject text4 = new TextObject();
text4.Name = "Text4";
text4.Bounds = new RectangleF(0, 0,
Units.Centimeters * 10, Units.Centimeters * 0.5f);
text4.Text = "Count: [CountOfProducts]";
text4.Font = new Font("Tahoma", 8, FontStyle.Bold);
// add it to GroupFooter
group1.GroupFooter.Objects.Add(text4);
// add a total
Total groupTotal = new Total();
groupTotal.Name = "CountOfProducts";
groupTotal.TotalType = TotalType.Count;
groupTotal.Evaluator = data1;
groupTotal.PrintOn = group1.Footer;
// add it to report totals
report.Dictionary.Totals.Add(groupTotal);
// run the report
report.Show();

准备好的报告如下:
在这里插入图片描述

使用自己的预览窗口

使用EnvironmentSettings组件(参见 "配置FastReport.Net环境 "部分),您可以调整标准预览窗口。相关属性包含在EnvironmentSettings.PreviewSettings属性里面。

如果您由于某些原因不想使用标准预览窗口,您可以创建自己的预览窗口。要做到这一点,请使用可以添加到您的表单上的PreviewControl控件。要在该控件中显示报表,请通过以下代码将其连接到Report对象。

report1.Preview = previewControl1;

要准备一份报告并在PreviewControl中显示,请使用Report对象的Show方法。

report1.Show();
your_form.ShowDialog()

或以下代码:

 if (report1.Prepare())
{
    
    
report1.ShowPrepared();
your_form.ShowDialog();
}

在这些例子中,your_form是包含PreviewControl的表单。
使用PreviewControl组件的方法,你可以从你的代码中处理它。您甚至可以使用ToolbarVisible, StatusbarVisible属性来关闭标准工具栏和/或状态栏。这在Demos/\C#/CustomPreview示例项目中进行了演示。

在数据向导中过滤表格

数据向导可以从 "数据|添加数据源… "菜单中调用。在这里您可以设置连接并选择一个或多个数据表。默认情况下,向导会显示所选连接中的所有可用表。如果您想过滤不必要的表,请使用 "Config.DesignerSettings.FilterConnectionT "菜单。DesignerSettings.FilterConnectionTables事件。以下示例显示了如何从表列表中删除 "表1 "表。

using FastReport.Utils;
Config.DesignerSettings.FilterConnectionTables += FilterConnectionTables;
private void FilterConnectionTables(
object sender, FilterConnectionTablesEventArgs e)
{
    
    
if (e.TableName == "Table 1")
e.Skip = true;
}

猜你喜欢

转载自blog.csdn.net/RoffeyYang/article/details/114083409