折腾报表那些事儿(1)RDLC

      最近一个月,也可以说是两个月,都一直在和报表这家伙周旋。这段时间可谓痛苦之极啊,都有想滚蛋的冲动,但还是一直坚持着,也行是性格决定吧~~
      大约两个月前收到经理的要求,让研究vs自带的RDLC。于是我开始踏上了这条郁闷,危险,悬疑的报表设计之路。
      1 关于RDLC 。
         相信很多人只要在研究这个东西,那rdlc是什么东西就不做介绍了。这款报表工具适用于CS、BS以及单机版应用程序。现行研究过的版本vs2005自带的rdlc。这个报表工具要想显示数据,还要搭配控件ReportViewer。在研究过程中刚开始就要求实现WEB页面的预览和打印。在研究初期发现VS2005自带的ReportViewer控件不支持客户端打印,只支持服务端打印。当然这样就没什么意思了。在查阅了相关资料之后发现,网上流传着一个vs 2008 的ReportViewer 控件,可以通过配置进行webconfig和页面注册的方式实现客户端打印。于是就开始了对控件进行升级,找了好久也试了好久才实现了该功能。后来一个项目继续一个送票单打印的功能。该打印功能需要能够实现一次性打印多张,并支持针式打印机的连续走纸模式,于是新的问题又来了,
       1 如何实现一次性打印多页,前提是如何实现多页显示?
       2 如何实现连续走纸?
       于是便开始了这两个问题摸索之路,
       1》对于第一个问题当然是在报表设计的时候解决,之需要对报表进行分组显示即可,ReportViewer 2008 版本的控件可以一次性打印多页,具体设计就不在多说了,查阅rdlc设计相关分组显示,分页显示即可。于是问题就来到了如何实现连续走纸,就这样我开始和打印机对上了,Y的打印机太烦躁了,刚开始我还不知道连续走纸从哪儿进纸张,应该用什么纸张。
       2》后来在经理的英明指导之下,我才知道了用“用穿孔纸从针式打印机的屁股后面进去,从前面出来!”于是我开始了我程序的测试,谁知道新的问题又来了,纸张是21*14的,一张送票单是 21*12左右。一张穿孔纸上可以打印1张送票单,然后就走下一张纸张。而打印机默认都是A4的纸张,当然是可以自定义的,我每次打印的时候 都要中间跳一张穿孔纸才打印第二张送票单。尝试将打印机添加一个自定义纸张 21*14,继续测试结果还是有问题。在想了很久,抑郁了很久,烦躁了很久之后,查阅了相关资料,请教了一些前辈。发现我用的打印机虽然在打印机列表里面显示的EPSON,但是那是驱动名称,而打印机真正的牌子是"映美"。
      于是我下载了该牌子打印机的驱动程序进行安装,并利用word文件来打印,就是这样的一个偶然的尝试,让我发现了一个可以实现连续走纸的方法。打印机默认A4纸张进行打印,而对于打印机在打印了页的有效数据之后也就是页上的有效高度之后就会打印第二页,于是便想了一个骗过打印机的方法。在报表设计的时候设置下边距:下边距=报表页高 - 上边距 - 打印内容的高度。这样就能实现连续走纸了,当然前提是最好使用和打印机同名的相配的驱动进行安装。由于时间紧迫要接着下一个项目,所以没有深入研究了。希望拍砖者能够对以上文字进行批斗~~~

原文地址:https://www.cnblogs.com/tzy080112/p/1489230.html