使用FastReport报表工具实现信封套打功能
在较早期的报表套打的时候,我倾向于使用LODOP的ActiveX进行报表的打印或者套打,BS效果还是很不错的。之前利用它在Winform程序里面实现信封套打功能,详细参考《
然后你需要有一个打印设备,我这里采用了一个佳能的喷墨打印机(当然其他的也没问题)。
其次我们开发一个工具来快速实现数据的导入和批量打印,如下界面所示。
最后当然能够满足要求的打印大量的信封出来,减少我们人工干预的麻烦了。
2、使用FastReport报表工具来实现信封的套打及批量打印
首先我们模仿上面的工具界面来做一个新的Winform程序,这次使用DevExpress界面来做,得到界面如下所示。
功能和前面软件的基本一样,只是界面有所变化差异而已。
现在我们来聊聊如何FastReport报表工具来实现套打的处理,这样我们就可以使用它来进行信封的打印了。
以上模板的设置,主要就是注意定义好几个参数,并将参数和具体的展示控件进行绑定,并加入一个图片作为不打印的元素即可。
报表在运行时刻可以进行模板的调整,如下是报表的【打印设计】界面。
我们可以利用FastReport提供的报表设计工具进行元素位置、大小、样式等方面的调整。这样就可以给客户很大的灵活性进行处理。
报表打印的操作如下代码所示。
/// <summary> /// 报表打印测试 /// </summary> private void btnPrintTest_Click(object sender, EventArgs e) { if(this.txtAddress.Text.Length == 0) { MessageDxUtil.ShowTips("请输入地址"); this.txtAddress.Focus(); return; } else if (this.txtReceiver.Text.Length == 0) { MessageDxUtil.ShowTips("请输入收件人"); this.txtReceiver.Focus(); return; } FrmReportPreview dlg = new FrmReportPreview(); var report = dlg.Report; //加载报表 var reportFile = Path.Combine(baseDir, "Report/信封报表.frx"); report.Load(reportFile); //绑定数据源 //定义参数和数据格式 var dict = new Dictionary<string, object>(); var zipCode = txtPostCode.Text.Trim().PadRight(6, ' ').ToCharArray(); dict.Add("C1", zipCode[0]); dict.Add("C2", zipCode[1]); dict.Add("C3", zipCode[2]); dict.Add("C4", zipCode[3]); dict.Add("C5", zipCode[4]); dict.Add("C6", zipCode[5]); dict.Add("Address", this.txtAddress.Text.Trim()); var Recipient = this.txtReceiver.Text.Trim(); if(!Recipient.EndsWith("收")) { Recipient += "收"; } dict.Add("Recipient", Recipient); //刷新数据源 foreach (string key in dict.Keys) { report.SetParameterValue(key, dict[key]); } dlg.ShowDialog(); }
以上打印处理的时候,会调用打印预览界面展示数据,如下界面所示。
报表打印设计处理,和打印测试差不多,也需要绑定数据,方便预览,代码如下所示。