ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C# winform 使用FastReport.Net自动打印一维码条码和二维码的解决方法

2021-04-26 18:56:03  阅读:408  来源: 互联网

标签:C# 数据源 打印 FastReport 二维码 一维 Net


C# winform 使用FastReport.Net自动打印一维码条码和二维码的解决方法,看完你一定会有所收获

玩转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纸,尾部未截图,且看参数和循环数据打印效果


标签:C#,数据源,打印,FastReport,二维码,一维,Net
来源: https://blog.51cto.com/u_15078738/2735140

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有