玩转FastReport.Net在windform窗体中自动打印一维码条码和二维码的解决方法,这里说下FastReport.Community是MIT协议,故可以放到你的商用项目中
1、玩FastReport.net首先要一个报表设计软件, 我这里用的是FastReport.Community版FastReport.Community.zip
2、英文版看的不爽可以加个中文语言包【点击下载】
3、以上做好了那么就开始做一个回执单功能打印布局吧,我们就做一个医院抽血过后的回执单,设计是这样子的
第一,点击保存字典,导出一个xml内容的.frd后缀文件默认名为:Dictionay.frd
第二、编辑导出的.frd文件,编辑完后保存,再导入
如下:
(1) BusinessObjectDataSource 是数据源节点。
(2) Name是BusinessObjectDataSource集合对象的名字。
(3) Column是集合泛型的属性,模板绑定数据时,使用Column的Name属性。
以下的格式是我编辑的内容,大家有不同的业务模型在这里编辑做成自己的系统业务模型后导入到报表中,数据区就可以选择数据源,然后循环
第三步,设置好参数,这里的参数是不用循环的
这里要说下,设置一维码和二维码映射的集合对象属性,一定要用一维码和二维码控件的表达式来映射集合对象属性请看图
第四,设置数据区数据循环,首先要将字典数据源CaseReportFormData绑定到 DataBand的属性DataSource中 ,各个控件请看以下图的说明来绑定映射字典数据源的属性
最终报表真容就是如此,懂了就很简单,这篇文章对于FastReport.Net只是基础的用法,希望对你有用
第五、通过后台代码将参数赋值,将数据源绑定真实数据,并且将数据传到到打印机中,在你的应用一定要有这三个dll:FastReport.Bars.dll、FastReport.dll、FastReport.Editor.dll
你的应用里一定要引用using FastReport;,以下是一个winform窗体button的事件:
private void btnReceipt_Click(object sender, EventArgs e) { var reportPath = AppDomain.CurrentDomain.BaseDirectory + @"\test2.frx"; FastReport.Report report = new FastReport.Report(); report.Load(reportPath); //构造caseformdata list 数据 var businessObjects = new List(); /*自动打印*/ for (int i = 0; i < data.Count; i++) { var item = data[i]; var datamodel = new CaseReportFormData() { BarCode=item.LabNum, PatNo=item.HospNum, Priority=item.Priority, Source=item.Source, TakeReportAddress=item.TakeReportAddress, TakeReportDesc=item.TakeReportDesc, TestItemDesc=item.TestItemDesc }; //mysql数据赋值给对象 businessObjects.Add(datamodel); } //刷新数据源 report.RegisterData(businessObjects, "CaseReportFormData"); //实际数据模型 var model = new { CnName = "张老五", Sex = "男", AgeDesc = "100岁", PrintTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), HospNum = "0001062975" }; var list = model.GetType().GetProperties(); //批量设置打印模板参数值 foreach (PropertyInfo pro in list) { var value = pro.GetValue(model, null); //获取参数 FastReport.Data.Parameter param = report.Parameters.FindByName(pro.Name); if (param != null) { param.Value = value; //将属性的值赋值给名字相同的报表参数 } } //关闭生成进度条 EnvironmentSettings eSet = new EnvironmentSettings(); eSet.ReportSettings.ShowProgress = false; //关闭对话框 report.PrintSettings.ShowDialog = false; //运行报表 report.Prepare(); report.PrintSettings.Printer = "Microsoft XPS Document Writer";//设置打印机 // 运行报表打印 report.Print(); // 释放使用的资源 report.Dispose(); }
第六、FastReport.Net打印出来的效果如图,这是一个A4纸,尾部未截图,且看参数和循环数据打印效果