翻譯|使用教程|編輯:李顯亮|2020-08-20 10:02:36.280|閱讀 718 次
概述:對于任何事件,都可以生成和顯示報表,以及導出報表并將其發送到打印。在輸出報表之前,需要在報表設計器中創建模板。在本文中,我們將使用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問題,感興趣的朋友可點擊下方按鈕下載最新版。
每個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),我們很高興為您提供查詢和咨詢。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn