主要思路:

  1. 在项目中引用fastreport.dll动态链接库
  2. 用fastreport designer 设计标签模板
  3. 在项目中调用fastreport 提供的API 设置标签变量参数、打印机属性等,发送打印

详细步骤:

1.安装fastreport标签软件,这里以fastreport demo版本为例。安装标签软件的主要作用是用来制作打印模板,只需安装到标签模板制作的电脑上即可,项目运行电脑可以不用安装。(但是我在实际的工作中发现有些电脑打印的时候报错了,看报错的信息中有提示fastreport的字样,就让现场的人在打印电脑上也安装一下,居然就不报错了,没有研究具体原因...)

官网地址:FastReport中文网FastReport控件中文网提供.NET、VCL正版控件购买,FastReport培训、FastReport中文教程、FastReport下载、FastReport技术支持、FastReport报价、FastReport帮助文档等全面的资源和服务https://www.fastreportcn.com/

如果官网下载不成功,可以在BD云盘提取:

安装方式与常规软件安装一样,此处不做赘述。

2.引入DLL到项目

        手动引入。右击项目解决方案资源管理器中的"引用"--"添加引用",浏览选择fastreport.dll 文件路径,添加到项目中即可。    

也可以在Nuget上安装引用。Nuget会帮助我们安装FastReport.dll及它所需要的其他依赖项到项目。

引用成功后,在项目的解决方案资源管理器中会看到FastReport。

3.制作标签模板

新建一个模板文件,在上面去拖拉你要的组件就可以了,我一般常用的就是文本框、表格、图片、条形码和二维码,二维码的格式很多,根据用户需求去选择对应的码制就行,然后界面简单布局一下。我在使用过程中发现低版本的DLL,应该是1.3.63.0吧,二维码不支持QRcode,打印出来的会是一团黑色的,然后升级到高版本就可以了。

模板上面的变量赋值我掌握到的有两种方式,一种是传递datatable 格式的数据,datatable的字段名要求与模板中的变量名一致;另一个是需要在模板中设置参数,然后在程序中设置同样的参数名称和值。模板也可以直接用数据库作为数据源,但是这种方式对数据库不安全,我没有研究它,另外还可以以EXCEL等其他文件来作为数据源,有兴趣的可以自行研究,我在项目中用到的还是通过程序代码来给变量赋值。

我这里简单的举一个,哦不对,是两个栗子作为参考哈。

栗子1:用tabletable 来传递变量的标签模板

关于控件的操作很简单,直接从工具栏拖过来简单设置一下就行。上面的模板,用到了表格、文本框、条形码、二维码。变量的设置用了常量("出货外箱标识"、"项目名称"等固定不变的文字可以使用常亮)、模板变量(P.item、P.boot、条形码等)。设置控件变量有两种方式,通过控件的Text属性或者双击控件,在弹出的Edit Text 窗口编辑。

需要注意的是,设置变量的格式为 [A.bcd],A可以简单地理解为一个对象,bcd为对象的属性值,这种理解与面向对象的概念比较像,不管设计的初衷是不是这样,反正这么容易记忆,哈哈。这个A在程序传递datatable数据到标签模板的时候会用到的。

栗子2:用模板参数来制作标签

点击标签模板任意空白区域,在右边找到Parameters树状结构,右击Parameter--New Parameter 即可新建一个变量,按F2或右击--Rename给这个变量改一个好听的名字,这一个变量就算完事了,重复这个步骤,把要用到的变量全建好。

设置好模板参数后,再设置标签元素的名称,同样设置Text属性为 [参数名]。也可以双击元素,在弹出的Edit Text 窗口中选择对应的变量双击或拖动设定。

设置完后的模板如下:

另外还可以用设计器的代码编辑功能来设置控件属性或事件,如下面演示对生产日期和保质期进行设置,如下设置生产日期为系统当前时间,有效期为30天。

Code选项卡的代码语法与C#语法是一样的,选中对应的控件,在属性窗口选择事件,即可进行编码,与VS 的操作类似。

4.通过代码给模板传递参数变量

        标签做好了,我们就可以写代码了~

上面我们有两种设置的标签变量的方式,对应了两种不同的传值方法。大致逻辑是一样的,只是传参格式稍有不同。

4.1 通过dataTabel 来传递,通过一个按钮的点击实现标签打印

private void button2_Click(object sender, EventArgs e)
{DataTable dt = new DataTable();DataRow dr = dt.NewRow();dt.Columns.Add("item", typeof(string));dt.Columns.Add("app", typeof(string));dt.Columns.Add("boot", typeof(string));dt.Columns.Add("hardware", typeof(string));dt.Columns.Add("batch", typeof(string));dt.Columns.Add("qty", typeof(string));dr["item"] = "123";dr["app"] = "1.0.0.1";dr["boot"] = "1.0.0.2";dr["hardware"] = "1.0.0.3";dr["batch"] = "ABC123";dr["qty"] = "100";dt.Rows.Add(dr);Report report = new Report();//加载标签模板report.Load(@"C:\Users\170616008\Desktop\DF_E70_BCU_3010660000331.frx");//注册打印数据report.RegisterData(dt,"P");//打印report.Print();
}

简单吧,三行代码,就可以实现打印了,设置默认打印机为PDF打印机,即可本地查看打印效果。

注意 report.RegisterData(dt,"P"); 第二个参数P ,与模板里面的变量名前缀一致!

4.2 通过Parameter 来传递,通过一个按钮的点击实现标签打印

private void button3_Click(object sender, EventArgs e)
{Report report = new Report();//加载标签模板report.Load(@"C:\Users\170616008\Desktop\DF_E70_BCU_3010660000331(2).frx");report.SetParameterValue("item", "456");report.SetParameterValue("app", "V1.2.0");report.SetParameterValue("boot", "V1.2.1");report.SetParameterValue("hardware", "V1.2.2");report.SetParameterValue("batch", "V.1.2.3");report.SetParameterValue("qty", "999");report.Print();
}

也能正常打印出来

5.见网友的小 Tips

  1. 二维码Border下的QuiteZone属性设置为False,可以去掉二维码周围的空白,个人比较喜欢,方便使用,尤其是在布局元素多,页面紧凑的时候。
  2. 通过 report.PrintSettings.Copies 属性可以设置打印数量。
  3. 打印的时候关闭打印设置 report.PrintSettings.ShowDialog = false;
  4. 导出打印图片 ImageExport img = new ImageExport(); report.Export(img,  "c:\\1.png");
  5. 导出PDF  PDFExport pdf = new PDFExport();  report.Export(pdf, "c:\\qqq1.pdf");
  6. 以上4、5如果不能导出,请将其放在print()之后试试呢,或在前面加上 report.Prepare();~~~
  7. 实现打印预览,先将dll添加到控件工具箱,然后拖一个previewControl1控件到窗体上,接着写代码 report.Preview = previewControl1; report.Prepare();report.ShowPrepared();
  8. 设置打印机 report.PrintSettings.Printer = ""; 不设置的话用的是系统默认打印机
  9. 用完了记得  report.Dispose() 一下哦~~~

(还有很多其他的功能和技巧,慢慢摸索~~~~更新时间2023年9月6日,刚上班)

十二笔记(一):winfrom 引用 FastReport.dll 打印标签相关推荐

  1. Senparc.Weixin.MP SDK 微信公众平台开发教程(二十二):如何安装 Nuget(dll) 后使用项目源代码调试...

    最近碰到开发者问:我使用 nuget 安装了 Senparc.Weixin SDK,但是有一些已经封装好的过程想要调试,我又不想直接附加源代码项目,这样就没有办法同步更新了,我应该怎么办? 这其实是一 ...

  2. 使用java理解程序逻辑 第十二章_Java弱引用的理解与使用

    Java弱引用的理解与使用 WeakReference 前言 看到篇帖子, 国外一个技术面试官在面试senior java developer的时候, 问到一个weak reference相关的问题. ...

  3. 读浅墨博客 十二 笔记

    http://blog.csdn.net/poem_qianmo/article/details/25560901 边缘检测的算子和滤波器: Canny算子,Sobel算子,Laplace算子以及Sc ...

  4. OpenCV学习笔记(三十一)——让demo在他人电脑跑起来 OpenCV学习笔记(三十二)——制作静态库的demo,没有dll也能hold住 OpenCV学习笔记(三十三)——用haar特征训练自己

    OpenCV学习笔记(三十一)--让demo在他人电脑跑起来 这一节的内容感觉比较土鳖.这从来就是一个老生常谈的问题.学MFC的时候就知道这个事情了,那时候记得老师强调多次,如果写的demo想在人家那 ...

  5. Windows Workflow HOL学习笔记(十二):创建状态基工作流

    W indows Workflow HOL学习笔记(十二):创建状态基工作流 本文内容来自Microsoft Hands-on Labs for Windows Workflow Foundation ...

  6. 《深入浅出DPDK》读书笔记(十二):DPDK虚拟化技术篇(半虚拟化Virtio)

    Table of Contents 半虚拟化Virtio 132.Virtio使用场景 133.Virtio规范和原理 11.2.1 设备的配置 1. 设备的初始化 2. 设备的发现 3. 传统模式v ...

  7. Android开发笔记(一百二十二)循环器视图RecyclerView

    RecyclerView RecyclerView是Android在support-v7库中新推出控件,中文别名为循环器视图,它的功能非常强大,可分别实现ListView.GridView,以及瀑布流 ...

  8. Python语言入门这一篇就够了-学习笔记(十二万字)

    Python语言入门这一篇就够了-学习笔记(十二万字) 友情提示:先关注收藏,再查看,12万字保姆级 Python语言从入门到精通教程. 文章目录 Python语言入门这一篇就够了-学习笔记(十二万字 ...

  9. 【Visual C++】游戏开发笔记三十二 浅墨DirectX提高班之一 DirectX大局观认知篇

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接:  http://blog.csdn.net/zhmxy555/article/details/8172615 作者:毛星云(浅 ...

  10. 深度学习入门笔记(十二):深度学习数据读取

    欢迎关注WX公众号:[程序员管小亮] 专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具 ...

最新文章

  1. python-函数式编程
  2. 大数相乘--极简单的思路
  3. http session
  4. 更换ubuntu软件源的方法
  5. python对文件的读操作方法有哪些-Python文件常用操作方法
  6. Angular中实现路由跳转并通过get方式传递参数
  7. Ubuntu中运行pip时报错
  8. 我认为必须要学的前端技能和架构体系
  9. vue和java bean_Java:JavaBean和BeanUtils
  10. datagridview列 值提取_提取符合条件的多个记录,VLOOKUP:盘他!
  11. 基于udp的协议netty课设题目_Netty UDP示例
  12. Java项目:springboot网上书城系统
  13. matlab显示和输出语句,matlab输出语句是什么,
  14. Idea系列文章2-依赖包的引入
  15. 华为HCDA论证教程
  16. 使用canvas绘制等分圆
  17. 数据湖、物联网等--南水北调中线工程的“智慧大脑”,是如何工作的?
  18. 【v-charts】折线图
  19. 如何写出更具有Python风格的代码
  20. 【Hibernate】 Api

热门文章

  1. 从底层谈WebGIS 原理设计与实现(二):探究本质,WebGIS前端地图显示之地图比例尺换算原理...
  2. 通过微信公众号实现微信快捷登陆
  3. cif t t操作流程图_外贸跟单员的详细工作流程:跟单员工作流程图
  4. 想更快成长更应该关注的博客
  5. xh2.54母头转换为杜邦线母头
  6. SpringSecurity授权
  7. 计算两向量的旋转角(转)
  8. 职场领导想逼你走时,他会用哪些奇招逼你走?
  9. EditPlus中配置JSON格式化功能
  10. java在线电影_java在线高清