最近在做项目时需要用到报表打印功能。就老版本中使用的微软RDLC报表,在打印时候速度慢的吓人,新版本软件贴别强调用户体验,必须提高打印速度。在一周的研究中先后试用了WPF的FlowDocument已动态生成FD文档的方式打印数据,在测试打印完成一个单据后发现打印任然要2到3秒时间。于是不得不另寻途径,由于.NET自带的各种报表打印方式都需要花不少时间在打印前的数据装换上,就只有考虑第三方组件来实现了。试过Crystal report,但是打印时间还是较长。最后找到了Grid++Report,写了个简单的Demo测试了下,基本在1秒内就能打印到Windows。下面就说下我在使用Grid++Report时的一点心得了。
Grid++Report的报表设计和Crystal report ,RDLC 等差不多。我在首次开发时主要遇到以下问题:
1.报表明细网格数据自动分布到下一页
解决办法
a、将子报表所在的报表头的“保持同页”属性设为“否”
b、页眉与页脚显示在页面的上下边距所在的区域,你的报表中的页面设置中的上下边距都为0,所以页眉与页脚根本没空间显示,所以就没看见
2.打印完成后数据导出到文件(grf)或者String时,数据没有导出明细表中的明细数据。(我们需要支持重打功能,重打时是没有原始数据的)
解决办法 使用报表对象的导出到文件方式导出ged格式文件,这个文件就能在打印时用来重打,不过需要使用见面显示控件。
3.C# - WPF 打印完成后界面上显示结果,报表布局没法控制
解决办法
子报表不能在查询显示器中完整显示出来,有子报表的报表不适合用查询显示器展现,应该改用打印显示器(GRPrintViewer)以打印预览的方式显示。