300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 如何基于FastReport报表工具 生成报表PDF文档展示医院处方笺的内容

如何基于FastReport报表工具 生成报表PDF文档展示医院处方笺的内容

时间:2018-07-13 11:50:43

相关推荐

如何基于FastReport报表工具 生成报表PDF文档展示医院处方笺的内容

FastReport .Net是适用于Windows Forms,,MVC和.NET Core的全功能报表解决方案。它可以在Microsoft Visual Studio -中使用。支持.Net Framework 2.0-4.x,.NET Core 3.0及以上版本。

在FastReport .NET .1的新版本中,我们实现了对.NET 5的支持。添加了新条形码-Deutsce Post Leitcode。将RTF转换为报告对象的算法已得到显着改进。并且还添加了用于转换数字的新功能。欢迎下载体验。(点击下方按钮下载)

立即点击下载 v.1最新版

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.Instance.GetFullNameByOpenID(info.CheckDoctor);

dict.Add(“CheckDoctor”, !string.IsNullOrEmpty(checkDoctor) ? checkDoctor : “未知”);

var CheckPharmacist = BLLFactory.Instance.GetFullNameByOpenID(info.CheckPharmacist);

dict.Add(“CheckPharmacist”, !string.IsNullOrEmpty(CheckPharmacist) ? CheckPharmacist : “未知”);

var SendUser = BLLFactory.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报表,总体来说,工作量主要是在设计报表模板这里,通过代码实现数据绑定的工作反而非常简单,只需要指定对应的参数和字段数据表即可,而报表的设计是一项精细的工作,我们需要根据实际情况,反复调整格式和呈现的效果才能做到尽善尽美,不过整体来说FastReport提供了非常强大的报表设计和处理过程,使得我们可以在设计一些复杂报表的时候,可以更加高效。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。