在较早期的报表套打的时候,我倾向于使用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();         }
复制代码

以上打印处理的时候,会调用打印预览界面展示数据,如下界面所示。

 

 报表打印设计处理,和打印测试差不多,也需要绑定数据,方便预览,代码如下所示。