轉(zhuǎn)帖|使用教程|編輯:楊鵬連|2021-01-12 11:11:24.670|閱讀 640 次
概述:本篇隨筆介紹如何基于FastReport報(bào)表工具,生成報(bào)表PDF文檔展示醫(yī)院處方箋的內(nèi)容。本篇隨筆介紹基于某個醫(yī)院的處方箋的格式報(bào)表的處理。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
FastReport .Net是適用于Windows Forms,ASP.NET,MVC和.NET Core的全功能報(bào)表解決方案。它可以在Microsoft Visual Studio 2005-2019中使用。支持.Net Framework 2.0-4.x,.NET Core 3.0及以上版本。
在FastReport .NET 2021.1的新版本中,我們實(shí)現(xiàn)了對.NET 5的支持。添加了新條形碼-Deutsce Post Leitcode。將RTF轉(zhuǎn)換為報(bào)告對象的算法已得到顯著改進(jìn)。并且還添加了用于轉(zhuǎn)換數(shù)字的新功能。歡迎下載體驗(yàn)。(點(diǎn)擊下方按鈕下載)
立即點(diǎn)擊下載FastReport.NET v2021.1最新版
Fastreport.NET在線購買價更低,專享85折起!趕緊加入購物清單吧!
2、生成報(bào)表PDF內(nèi)容
通過上面報(bào)表模板的設(shè)計(jì),我們基本的前期工作就準(zhǔn)備好了,需要的就是根據(jù)實(shí)際業(yè)務(wù)的需要,動態(tài)呈現(xiàn)數(shù)據(jù)了。
在綁定數(shù)據(jù)并生成PDF格式報(bào)表的時候,我們需要先構(gòu)建一個報(bào)表對象,如下代碼所示。
//生成PDF報(bào)表文檔到具體文件 Report report = new Report(); report.Load(reportPath);由于數(shù)據(jù)我們是動態(tài)構(gòu)建的,因此我們需要準(zhǔn)備參數(shù)數(shù)據(jù)源和字段數(shù)據(jù)源兩個部分,參數(shù)我們用字典來承載,字段數(shù)據(jù),我們用DataTable來承載,如下所示。
//定義參數(shù)和數(shù)據(jù)格式 var dict = new Dictionary<string, object>(); var dt = DataTableHelper.CreateTable("ProductName,Quantity|int,Unit,Specification,HowTo,Frequency");然后我們根據(jù)系統(tǒng)需要填入動態(tài)的數(shù)據(jù),如下代碼所示。
//準(zhǔn)備數(shù)據(jù) dict.Add("Name", info.PatientName); dict.Add("Gender", info.Gender); var age = info.BirthDate.GetAge(); dict.Add("Age", age); dict.Add("Telephone", info.Telephone); dict.Add("CreateTime", info.CreateTime); var checkDoctor = BLLFactory<User>.Instance.GetFullNameByOpenID(info.CheckDoctor); dict.Add("CheckDoctor", !string.IsNullOrEmpty(checkDoctor) ? checkDoctor : "未知"); var CheckPharmacist = BLLFactory<User>.Instance.GetFullNameByOpenID(info.CheckPharmacist); dict.Add("CheckPharmacist", !string.IsNullOrEmpty(CheckPharmacist) ? CheckPharmacist : "未知"); var SendUser = BLLFactory<User>.Instance.GetFullNameByOpenID(info.SendUser); dict.Add("SendUser", !string.IsNullOrEmpty(SendUser) ? SendUser : "未知"); var qrcode = string.Format("{0}/h5/PrescriptionDetail?id={1}", ConfigData.WebsiteDomain, info.ID); dict.Add("QrCode", qrcode); dict.Add("BarCode", info.PrescriptionNo); if(detailList != null) { foreach(var item in detailList) { var dr = dt.NewRow(); dr["ProductName"] = item.ProductName; dr["Quantity"] = item.Quantity; dr["Unit"] = item.Unit; dr["Specification"] = ""; dr["HowTo"] = item.HowTo; dr["Frequency"] = item.Frequency; dt.Rows.Add(dr); } }最后根據(jù)上面的數(shù)據(jù),綁定并生成PDF報(bào)表即可,如下代碼所示。
report.RegisterData(dt, "Detail"); foreach (string key in dict.Keys) { report.SetParameterValue(key, dict[key]); } //運(yùn)行報(bào)表 report.Prepare(); //導(dǎo)出PDF報(bào)表 PDFExport export = new PDFExport(); report.Export(export, realPath); report.Dispose();由于這個功能我們是在微信公眾號里面集成的一個報(bào)表呈現(xiàn),因此我們可以通過PDF預(yù)覽的方式,或者直接打開PDF文檔。
如果采用PDF在線預(yù)覽方式,可以參考我隨筆《實(shí)現(xiàn)在線預(yù)覽PDF的幾種解決方案》介紹的那樣,最終采用PDFJS的在線預(yù)覽方案,不管在微信端,還是Web端都是比較不錯的效果。
如果采用PDFJS預(yù)覽方式,那么JS代碼如下所示。
var baseUrl = "@ViewBag.WebsiteDomain/Content/JQueryTools/pdfjs/web/viewer.html"; var url = baseUrl + "?file=" + filePath;//實(shí)際地址 location.href = url;如果是直接打開PDF,我們我們就直接傳遞給瀏覽器一個PDF文件路徑即可
location.href = filePath在微信端預(yù)覽的效果如下所示。
還想要更多嗎?您可以點(diǎn)擊閱讀【FastReport 報(bào)表2020最新資源盤點(diǎn)】,查找需要的教程資源。讓人興奮的是FastReport .NET正在慧都網(wǎng)火熱銷售中!慧都17周年慶惠享超低折扣,低至3701元起!>>查看價格詳情
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: