彩票走势图

报告生成器FastReport .NET实践指南:从WPF应用程序创建销售收据

翻译|使用教程|编辑:李显亮|2020-08-20 10:02:36.280|阅读 653 次

概述:对于任何事件,都可以生成和显示报表,以及导出报表并将其发送到打印。在输出报表之前,需要在报表设计器中创建模板。在本文中,我们将使用FastReport .NET报告生成器。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:


报表生成器FastReport .NET是适用于.NET Core 3,ASP.NET,MVC和Windows窗体的全功能报告库。使用FastReport .NET,您可以创建独立于应用程序的.NET报告。

近日,FastReport .Net升级到v2020.3版,在此版本中,添加了瑞士QR码,允许配置打印机托盘以打印报告的最后一页,不再支持.NET Framework 2.0,同时修复了多个Bug问题,感兴趣的朋友可点击下方按钮下载最新版。

点击下载最新版FastReport .Net

每个WinForms开发人员都认为标准的表单控件看起来太单一了,如果能给应用程序带来更有趣的设计就好了。因此,特别是在需要特殊设计的情况下,微软创建了一个特殊的库——WPF (Windows Presentation Foundation)。

如果想创建一个销售会计软件,需要生成主要的会计文档,例如发票和收据。这些文档应该反映来自数据库的数据。最好的解决方案是使用报表生成器创建文档模板并填充数据。可以使用报表生成器库将报表集成到WPF应用程序中。因此,对于任何事件,都可以生成和显示报表,以及导出报表并将其发送到打印。

在输出报表之前,需要在报表设计器中创建模板。在本文中,我们将使用FastReport .NET报告生成器

在销售收据信息的卖方,买方和已售出的货物将显示。有些国家倾向于单独指出税率,计算应缴税款以及税后的最终金额。因此,在我们的示例中,我们将考虑这样一个销售收据。

因为数据将从数据库中获取,所以首先我们需要创建到数据源的连接。在本例中,我们的任务是创建以下模板:

报告生成器FastReport .NET实践指南:从WPF应用程序创建销售收据

为了显示特定顺序的每个表中的数据,必须连接所有这些表。为此,请快速报告。Net提供了一种通过键链接表的机制。Order表链接到Customers和Employees表,Order Details表链接到订单和产品。

这意味着,对于特定的订单记录,将按键从这些表中选择相应的数据。这样我们就可以从客户表中获取具体订单记录的买家名称:

报告生成器FastReport .NET实践指南:从WPF应用程序创建销售收据

数据带有一个详细的带及其页眉和页脚带。对于详细数据波段,定义了订单详细信息源。该表也有链接:

报告生成器FastReport .NET实践指南:从WPF应用程序创建销售收据

正是如此,它链接到Orders表,以及可以从中获得产品名称的产品表。

现在,当清楚主要信息来自于订单表,详细的产品信息来自于订单明细表时,我们可以考虑总数。第一个是行总和——商品数量与价格的乘积是通过简单地乘以字段来计算的:[订单细节.单价]*[订购明细.数量]。这个总数是为每一项计算的。

接下来,需要汇总此列中的所有总数,并在subtotal字段中显示它们。为此,在数据窗口中创建一个新的总数:

报告生成器FastReport .NET实践指南:从WPF应用程序创建销售收据

让我们给它命名为SubTotal,并在出现的窗口中设置属性:

报告生成器FastReport .NET实践指南:从WPF应用程序创建销售收据

对于数据表达式,我们使用了与行总数相同的字段相乘的组合。这样我们就得到了所有产品的总和。

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按钮:

报告生成器FastReport .NET实践指南:从WPF应用程序创建销售收据

现在不仅可以查看收据创建,还可以保存为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.NET在线购买价更低,专享85折起!赶紧加入购物清单吧!

还想要更多吗?您可以点击阅读【FastReport 报表2020最新资源盘点】查找需要的教程资源。如果您有任何疑问或需求,请随时加入FastReport技术交流群(783996712),我们很高兴为您提供查询和咨询


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP