翻譯|使用教程|編輯:李顯亮|2020-08-20 10:02:36.280|閱讀 718 次
概述:對(duì)于任何事件,都可以生成和顯示報(bào)表,以及導(dǎo)出報(bào)表并將其發(fā)送到打印。在輸出報(bào)表之前,需要在報(bào)表設(shè)計(jì)器中創(chuàng)建模板。在本文中,我們將使用FastReport .NET報(bào)告生成器。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
報(bào)表生成器FastReport .NET是適用于.NET Core 3,ASP.NET,MVC和Windows窗體的全功能報(bào)告庫(kù)。使用FastReport .NET,您可以創(chuàng)建獨(dú)立于應(yīng)用程序的.NET報(bào)告。
近日,F(xiàn)astReport .Net升級(jí)到v2020.3版,在此版本中,添加了瑞士QR碼,允許配置打印機(jī)托盤以打印報(bào)告的最后一頁(yè),不再支持.NET Framework 2.0,同時(shí)修復(fù)了多個(gè)Bug問題,感興趣的朋友可點(diǎn)擊下方按鈕下載最新版。
每個(gè)WinForms開發(fā)人員都認(rèn)為標(biāo)準(zhǔn)的表單控件看起來太單一了,如果能給應(yīng)用程序帶來更有趣的設(shè)計(jì)就好了。因此,特別是在需要特殊設(shè)計(jì)的情況下,微軟創(chuàng)建了一個(gè)特殊的庫(kù)——WPF (Windows Presentation Foundation)。
如果想創(chuàng)建一個(gè)銷售會(huì)計(jì)軟件,需要生成主要的會(huì)計(jì)文檔,例如發(fā)票和收據(jù)。這些文檔應(yīng)該反映來自數(shù)據(jù)庫(kù)的數(shù)據(jù)。最好的解決方案是使用報(bào)表生成器創(chuàng)建文檔模板并填充數(shù)據(jù)。可以使用報(bào)表生成器庫(kù)將報(bào)表集成到WPF應(yīng)用程序中。因此,對(duì)于任何事件,都可以生成和顯示報(bào)表,以及導(dǎo)出報(bào)表并將其發(fā)送到打印。
在輸出報(bào)表之前,需要在報(bào)表設(shè)計(jì)器中創(chuàng)建模板。在本文中,我們將使用FastReport .NET報(bào)告生成器。
在銷售收據(jù)信息的賣方,買方和已售出的貨物將顯示。有些國(guó)家傾向于單獨(dú)指出稅率,計(jì)算應(yīng)繳稅款以及稅后的最終金額。因此,在我們的示例中,我們將考慮這樣一個(gè)銷售收據(jù)。
因?yàn)閿?shù)據(jù)將從數(shù)據(jù)庫(kù)中獲取,所以首先我們需要?jiǎng)?chuàng)建到數(shù)據(jù)源的連接。在本例中,我們的任務(wù)是創(chuàng)建以下模板:
為了顯示特定順序的每個(gè)表中的數(shù)據(jù),必須連接所有這些表。為此,請(qǐng)快速報(bào)告。Net提供了一種通過鍵鏈接表的機(jī)制。Order表鏈接到Customers和Employees表,Order Details表鏈接到訂單和產(chǎn)品。
這意味著,對(duì)于特定的訂單記錄,將按鍵從這些表中選擇相應(yīng)的數(shù)據(jù)。這樣我們就可以從客戶表中獲取具體訂單記錄的買家名稱:
數(shù)據(jù)帶有一個(gè)詳細(xì)的帶及其頁(yè)眉和頁(yè)腳帶。對(duì)于詳細(xì)數(shù)據(jù)波段,定義了訂單詳細(xì)信息源。該表也有鏈接:
正是如此,它鏈接到Orders表,以及可以從中獲得產(chǎn)品名稱的產(chǎn)品表。
現(xiàn)在,當(dāng)清楚主要信息來自于訂單表,詳細(xì)的產(chǎn)品信息來自于訂單明細(xì)表時(shí),我們可以考慮總數(shù)。第一個(gè)是行總和——商品數(shù)量與價(jià)格的乘積是通過簡(jiǎn)單地乘以字段來計(jì)算的:[訂單細(xì)節(jié).單價(jià)]*[訂購(gòu)明細(xì).數(shù)量]。這個(gè)總數(shù)是為每一項(xiàng)計(jì)算的。
接下來,需要匯總此列中的所有總數(shù),并在subtotal字段中顯示它們。為此,在數(shù)據(jù)窗口中創(chuàng)建一個(gè)新的總數(shù):
讓我們給它命名為SubTotal,并在出現(xiàn)的窗口中設(shè)置屬性:
對(duì)于數(shù)據(jù)表達(dá)式,我們使用了與行總數(shù)相同的字段相乘的組合。這樣我們就得到了所有產(chǎn)品的總和。
Tax Rate字段指示必須以稅收形式支付的稅基的百分比。在這里,這個(gè)數(shù)字是5%。對(duì)于應(yīng)稅字段,您需要計(jì)算應(yīng)稅金額。公式很簡(jiǎn)單:總計(jì)*利率:
((小計(jì))* 0.05)
最后,總應(yīng)付款。它由小計(jì)和稅金的總和組成:
[[小計(jì)] + [小計(jì)] * 0.05]
這樣就完成了銷售收據(jù)的創(chuàng)建。然后需要在應(yīng)用程序中保存報(bào)表模板。例如,創(chuàng)建App_Data文件夾并將報(bào)告模板和數(shù)據(jù)庫(kù)nwind.xml保存在其中。
要在應(yīng)用程序中顯示報(bào)表,我們需要向表單添加ScrollViewer組件,以便能夠滾動(dòng)報(bào)表。在內(nèi)部添加另一個(gè)組件——列表框。它將用于以Xaml格式顯示報(bào)表。在申請(qǐng)表中添加三個(gè)按鈕:顯示報(bào)表、導(dǎo)出報(bào)表為PDF、打印報(bào)表。
為每個(gè)按鈕添加一個(gè)單擊事件。因此,報(bào)告顯示:
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) }); } }
在這里,我們創(chuàng)建一個(gè)報(bào)表對(duì)象,并將之前創(chuàng)建的報(bào)表模板加載到其中。接下來,創(chuàng)建一個(gè)數(shù)據(jù)源并將其注冊(cè)到報(bào)表中。WPF應(yīng)用程序中的表單是使用XMAL語(yǔ)言構(gòu)建的。因此,報(bào)告必須以這種格式顯示。為此,我們執(zhí)行了到XMAL的導(dǎo)出。
將報(bào)表導(dǎo)出為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); } }
這里的思想與報(bào)表的顯示相同,但我們將從導(dǎo)出中獲得的結(jié)果保存在一個(gè)文件夾中,而不將其添加到表單中。
打印報(bào)告的按鈕代碼:
private void Print_Click(object sender, RoutedEventArgs e) { PrintDialog printDialog = new PrintDialog(); if (printDialog.ShowDialog() == true) { printDialog.PrintVisual(lb, "Print the report"); } }
在打印報(bào)告之前,需要首先使用按鈕來顯示它。通過單擊它,將調(diào)用打印對(duì)話框并打印ListBox組件的內(nèi)容。
現(xiàn)在運(yùn)行應(yīng)用程序,點(diǎn)擊Show按鈕:
現(xiàn)在不僅可以查看收據(jù)創(chuàng)建,還可以保存為PDF格式并打印它!還可以將它導(dǎo)出到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。
還想要更多嗎?您可以點(diǎn)擊閱讀【FastReport 報(bào)表2020最新資源盤點(diǎn)】,查找需要的教程資源。如果您有任何疑問或需求,請(qǐng)隨時(shí)加入FastReport技術(shù)交流群(783996712),我們很高興為您提供查詢和咨詢。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn