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