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

主要思路:

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

详细步骤:

1.安装fastreport标签软件,这里以fastreport demo版本为例。安装标签软件的主要作用是用来制作打印模板,只需安装到程序开发电脑或标签模板制作的电脑上即可,项目运行电脑可以不用安装。

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

进入下载站点选择产品类型。

下载自己想要的版本。

     

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

2.引入DLL到项目

        需要引入的dll文件可以在上面步骤1下载的程序安装目录找到。

        手动引入。右击项目解决方案资源管理器中的"引用"--"添加引用",浏览选择fastreport相关文件路径,添加到项目中即可。    (fastreport相关的dll都引用进去,不确定都会用得上,但是小弟我曾经少引用了线上出现了多次问题,反正都引用不亏)

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

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

3.制作标签模板

        制作标签模版需要用到上面步骤1安装的设计程序。

   

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

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

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

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

           

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

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

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

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

        设置好模板参数后,再设置标签元素的名称,同样设置Text属性为 [参数名]。也可以双击元素,在弹出的Edit Text 窗口中选择对应的变量双击或拖动设定。注意用模版parameter的方式,变量前面不带 "类名"。

设置完后的模板如下:

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

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

          

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

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

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

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

private void btnPrint1_Click(object sender, EventArgs e)
{
    DataTable dt = new DataTable();
    dt.Columns.Add("WLDM", typeof(string));
    dt.Columns.Add("YJBBH", typeof(string));
    dt.Columns.Add("RJBBH", typeof(string));
    dt.Columns.Add("PC", typeof(string));
    dt.Columns.Add("SL", typeof(string));

    DataRow row = dt.NewRow();
    row["WLDM"] = "10050407080990";
    row["YJBBH"] = "V1.4.3.5";
    row["RJBBH"] = "V2.4.5.6";
    row["PC"] = "20240416001-76";
    row["SL"] = "20";

    dt.Rows.Add(row);

    Report report = new Report();

    //加载标签模版
    report.Load(@"D:\Users\twelve\Desktop\temp1.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(@"D:\Users\twelve\Desktop\temp2.frx");

    //设置变量
    report.SetParameterValue("WLDM", "10050407080991");
    report.SetParameterValue("YJBBH", "V1.4.3.6");
    report.SetParameterValue("RJBBH", "V2.4.5.7");
    report.SetParameterValue("PC", "20240416001-78");
    report.SetParameterValue("SL", "30");

    //打印
    report.Print();
}

        也能正常打印出来。推荐这种方式,简洁,而且如果模版用到了代码没有定义的参数,方式1会报错,方式2不会。

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() 一下哦~~~
  10. (2023-02-10)补充:如果打印报错 "fastreport 的类型初始值设定项引发异常",除了安装fastreport 软件外,检查下 FastReport.dll 、FastReport.Bars.dll、FastReport.Compat.dll、FastReport.DataVisualization.dll、FastReport.Editor.dll 有没有引用。据经验这些不一样全部用到,但是以防万一。还有一个  FastReport.xml 文件,也可以放到目录去。上面这些文件在解压安装包里可以找到。

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

2024年4月16日更新一些错误和替换违规图片不显示。(这两天大A牛灾啊~再继续几天建仓^_^)

         

      

WinForms Activiz.net 是一个开源的C#图形用户界面库,用于在Windows操作系统上创建交互式和可视化的应用程序。它基于Activiz.net库,提供了一套丰富的控件和功能,使开发者能够快速构建功能强大的图形界面。 Activiz.net是一个强大的开源可视化化引擎,它基于VTK(可视化工具包),能够处理和可视化大规模的科学和工程数据。WinForms Activiz.net则是在此基础上封装的一个兼容WinForms应用程序的版本。通过使用Activiz.net库,开发者可以利用WinForms控件来创建交互式的3D可视化应用程序。 WinForms Activiz.net提供了许多强大的功能,包括: 1. 2D和3D可视化:开发者可以使用WinForms Activiz.net来创建各种类型的2D和3D可视化图形,包括散点图、线图、曲线图、轮廓图等。 2. 用户交互:开发者可以添加各种交互功能,如选择、缩放、平移和旋转,以便用户能够自由探索和操作图形。 3. 数据处理和分析:WinForms Activiz.net提供了一系列的数据处理和分析工具,例如数据过滤、统计分析、拟合曲线等,使开发者能够更方便地处理和分析大规模的科学和工程数据。 4. 数据导入与导出:开发者可以通过WinForms Activiz.net将数据从不同的文件格式导入到应用程序中,并支持将可视化结果导出到图像或视频文件中。 总之,WinForms Activiz.net是一个强大而灵活的图形用户界面库,它能够帮助开发者快速构建交互式和可视化的应用程序。无论是科学研究还是工程设计,WinForms Activiz.net都能为开发者提供一种高效和直观的方式来处理和展示数据。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值