报告生成器FastReport .NET实践指南:从WPF应用程序创建销售收据
报表生成器FastReport .NET是适用于.NET Core 3,ASP.NET,MVC和Windows窗体的全功能报告库。使用FastReport .NET,您可以创建独立于应用程序的.NET报告。
近日,FastReport .Net升级到v2020.3版,在此版本中,添加了瑞士QR码,允许配置打印机托盘以打印报告的最后一页,不再支持.NET Framework 2.0,同时修复了多个Bug问题,感兴趣的朋友可点击下方按钮下载最新版。
每个WinForms开发人员都认为标准的表单控件看起来太单一了,如果能给应用程序带来更有趣的设计就好了。因此,特别是在需要特殊设计的情况下,微软创建了一个特殊的库——WPF (Windows Presentation Foundation)。
如果想创建一个销售会计软件,需要生成主要的会计文档,例如发票和收据。这些文档应该反映来自数据库的数据。最好的解决方案是使用报表生成器创建文档模板并填充数据。可以使用报表生成器库将报表集成到WPF应用程序中。因此,对于任何事件,都可以生成和显示报表,以及导出报表并将其发送到打印。
在输出报表之前,需要在报表设计器中创建模板。在本文中,我们将使用FastReport .NET报告生成器。
在销售收据信息的卖方,买方和已售出的货物将显示。有些国家倾向于单独指出税率,计算应缴税款以及税后的最终金额。因此,在我们的示例中,我们将考虑这样一个销售收据。
因为数据将从数据库中获取,所以首先我们需要创建到数据源的连接。在本例中,我们的任务是创建以下模板:
为了显示特定顺序的每个表中的数据,必须连接所有这些表。为此,请快速报告。Net提供了一种通过键链接表的机制。Order表链接到Customers和Employees表,Order Details表链接到订单和产品。
这意味着,对于特定的订单记录,将按键从这些表中选择相应的数据。这样我们就可以从客户表中获取具体订单记录的买家名称:
数据带有一个详细的带及其页眉和页脚带。对于详细数据波段,定义了订单详细信息源。该表也有链接:
正是如此,它链接到Orders表,以及可以从中获得产品名称的产品表。
现在,当清楚主要信息来自于订单表,详细的产品信息来自于订单明细表时,我们可以考虑总数。第一个是行总和——商品数量与价格的乘积是通过简单地乘以字段来计算的:[订单细节.单价]*[订购明细.数量]。这个总数是为每一项计算的。
接下来,需要汇总此列中的所有总数,并在subtotal字段中显示它们。为此,在数据窗口中创建一个新的总数:
让我们给它命名为SubTotal,并在出现的窗口中设置属性:
对于数据表达式,我们使用了与行总数相同的字段相乘的组合。这样我们就得到了所有产品的总和。
Tax Rate字段指示必须以税收形式支付的税基的百分比。在这里,这个数字是5%。对于应税字段,您需要计算应税金额。公式很简单:总计*利率:
((小计)* 0.05)
最后,总应付款。它由小计和税金的总和组成:
[[小计] + [小计] * 0.05]
这样就完成了销售收据的创建。然后需要在应用程序中保存报表模板。例如,创建App_Data文件夹并将报告模板和数据库nwind.xml保存在其中。
要在应用程序中显示报表,我们需要向表单添加ScrollViewer组件,以便能够滚动报表。在内部添加另一个组件——列表框。它将用于以Xaml格式显示报表。在申请表中添加三个按钮:显示报表、导出报表为PDF、打印报表。
为每个按钮添加一个单击事件。因此,报告显示:
private void Button_Click(object sender, RoutedEventArgs e) { var report = new Report(); report.Load("C:/Users/User/source/repos/WPFInvoice/WPFInvoice/App_Data/invoice.frx"); var data = new DataSet(); data.ReadXml("C:/Users/User/source/repos/WPFInvoice/WPFInvoice/App_Data/nwind.xml"); report.RegisterData(data); report.Prepare(); var export = new XAMLExport(); export.HasMultipleFiles = true; using (var ms = new MemoryStream()) { export.Export(report, ms); lb.Items.Add(new Frame() { Content = XamlReader.Load(ms) }); } }
在这里,我们创建一个报表对象,并将之前创建的报表模板加载到其中。接下来,创建一个数据源并将其注册到报表中。WPF应用程序中的表单是使用XMAL语言构建的。因此,报告必须以这种格式显示。为此,我们执行了到XMAL的导出。
将报表导出为PDF格式的按钮代码:
private void PDFExport_Click(object sender, RoutedEventArgs e) { var report = new Report(); report.Load("C:/Users/User/source/repos/WPFInvoice/WPFInvoice/App_Data/invoice.frx"); var data = new DataSet(); data.ReadXml("C:/Users/User/source/repos/WPFInvoice/WPFInvoice/App_Data/nwind.xml"); report.RegisterData(data); report.Prepare(); var export = new PDFExport(); export.HasMultipleFiles = true; using (var fs = new FileStream("C:/Users/User/source/repos/WPFInvoice/WPFInvoice/App_Data/report.pdf", FileMode.Create)) { export.Export(report, fs); } }
这里的思想与报表的显示相同,但我们将从导出中获得的结果保存在一个文件夹中,而不将其添加到表单中。
打印报告的按钮代码:
private void Print_Click(object sender, RoutedEventArgs e) { PrintDialog printDialog = new PrintDialog(); if (printDialog.ShowDialog() == true) { printDialog.PrintVisual(lb, "Print the report"); } }
在打印报告之前,需要首先使用按钮来显示它。通过单击它,将调用打印对话框并打印ListBox组件的内容。
现在运行应用程序,点击Show按钮:
现在不仅可以查看收据创建,还可以保存为PDF格式并打印它!还可以将它导出到FastReport中可用的其他文件格式:HTML、BMP、PNG、JPEG、GIF、TIFF、EMF、PDF、XLSX、DOCX、PPTX、ODS、ODT、RTF、文本、XPS、XML、XAML、PS、PPML、LaTeX、Json、Dbf、Csv、XLS (Biff8)、SVG、ZPL。
还想要更多吗?您可以点击阅读【FastReport 报表2020最新资源盘点】,查找需要的教程资源。如果您有任何疑问或需求,请随时加入FastReport技术交流群(783996712),我们很高兴为您提供查询和咨询。