RDLC报表打印控件使用说明

RDLC报表打印控件使用说明

 

       由于,有个项目使用RDLC来展示、打印报表,鉴于微软的RDLC报表不是很成熟,在使用RDLC报表的时候碰到了一系列问题,其中比较突出的就是报表打印问题,主要体现为3个方面:

       1)用户不能代码调用RDLC报表控件的打印按钮;

       2RDLC报表控件自带的打印功能,第一次打印的时候经常打印不出来,要多打几次才能打印出内容;

       3RDLC报表控件自带的打印功能,打印出来的格式与预设的打印纸张格式往往不一致;

       鉴于此,我写了个RDLC报表打印控件,这里要感谢下“蜡人张”,因为写该控件的时候借鉴了蜡人张的关于RDLC报表打印的一篇博文。

       该控件只公开了2个类:PrinterMargin具体描述如下。

Printer

+bool PrintDialog(LocalReport, out string)static方法,返回boolean

+bool PrintDialog(LocalReport, Margin, out string)static方法,返回boolean

+bool Print(LocalReport, out string)static方法,返回boolean值,不显示打印机选择对话框

+bool Print(LocalReport, Margin, out string)static方法,返回boolean值,不显示打印机选择对话框

 

Margin

Margin(left,right,top,bottom),都是decimal类型,左边距、右边距、上边距、下边距

 

       如某个rdlc报表控件为reportViewer1,则可以使用该打印控件来打印该报表,代码如下所示。

String errMsg = "";//打印出错时的返回的错误信息

bool bln = Printer.Print(this.reportViewer1.LocalReport, new Margin(0.2m,0.2m,2.54m,2.54m), out errMsg);//直接打印,并设置了页边距左右都是0.2cm,上下都是0.2cm

================当然亦可打印的时候让其弹出打印对话框==========================

bool bln = Printer.PrintDialog(this.reportViewer1.LocalReport, new Margin(0.2m,0.2m,2.54m,2.54m), out errMsg);//直接打印,并设置了页边距左右都是0.2cm,上下都是0.2cm

================亦可利用纸张的默认边距===============================

bool bln = Printer.PrintDialog(this.reportViewer1.LocalReport , out errMsg);//直接打印,并设置了页边距左右都是0.2cm,上下都是0.2cm,由于C#PageSettings ps = pd.PrinterSettings.DefaultPageSettings获取纸张的默认设置时,其页边距不能准确得到。因此,网上很多人都在说自定义纸张打印的时候,明明是设置了页边距怎么每次打出来设置好的页边距都无效,就是这个原因所致。因此,套打的时候,大家打印的时候,请调用带页边距设置参数的方法。

       由于,不知如何粘贴附件,有需要的人可在CSDN里下载,请搜索“RDLC报表打印控件”。

reprint 使用说明 直接从datasource,dbgrid,stringgrid导入数据, 只需简单设置,不用手工制作,即可生成您需要的报表,具有预览功能。即可自定义纸张,又可适应 打印机默认纸张。各种打印设置,功能更强大。 一 、控件属性: 1、colstitle 设置报表的列标题属性 (1)alignment 列标题对齐方式。 (2)font 列标题字体 (3)print 设置是否打印列标题 (4)rowspace 列标题行的高度 2、datasource 选择要打印的datasource 3、dbgrid 选择要打印的dbgrid 4、stringgrid 选择要打印stringgrid 5、detail 设置要打印的明细数据属性 (1)arrange 设置明细字段排列方向 Horizontal 横向打印(默认的一般打印) Vertical 竖向打印(字段竖向排列适合打印字段内容较长的报表如“会议纪录”) (2)aotureturn 打印明细字段时,如果字段超过列的宽度是否允许自动换行 (3)colsline 设置竖线属性引用tpen类 (4)footer 设置明细尾 (5)frame 设置明细边框属性引用tpen类 (6)head 设置明细头同footer (7)rowsline 设置横线属性引用tpen类 (8)rowspace 设置明细行的高度 (9)top 明细与标题的距离 6、page 设置纸张的上下左右边距 7、pagefooter 设置页脚同明细尾 8、pageheader 设置页眉同页脚 9、printobject 选择要打印的对象 (datasource 、dbgrid、 stringgrid ) 10、title 设置标题类页眉、页脚 二 、控件方法: (1) preview 预览 (2) print 打印 (3) SaveToFile() 保存为报表文件 (4) SaveToStream() 保存为流(然后就可把整个报表存到数据库了很方便哦! ~_~) (5) PrintFile() 打印报表文件 (6) PrintStream() 打印流(流的数据库存取就不用多说了吧) (7) PreviewFile() 预览文件 (8) PreviewStream() 预览流 (9) OptionToStream() 报表的属性保存为流 (10) OptionFromStream() 从流中得到报表属性 三、 控件事件: AfterPrint 打印后 BeforePrint 打印前 (本来很多事件,但没有预览,后来加上预览以及一些方法后实现很困难就去掉了!) 四、注意事项 (1) text 属性,输入“¦;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#¦;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;”打印页码值,如果想打印页码可输入“第¦;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#¦;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;页” 输入“¦;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;RecordCount¦;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;”打印 记录数 (2) 不同的打印机,打印预览效果可能有一点点不同(保证数据打印完全正确一致)。本人用一台针式和一台激光打印机做测试,开始差别较大后经过调试基本一致,不知其他打印机如何。 就这些个吧基本满足了我的软件开发需要,解决了很多问题,关键是做报表省了很大力气,当然了很复杂的报表还是要其它报表控件来解决。如果有其他问题或好的建议可与我联系。 程序设计:吴进昊
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值