RDLC在不预览的情况下打印本地报表
关于VS2010RDLC报表的详细使用说明
关于VS2010RDLC报表的详细使⽤说明各位技术屌丝们好,之前我⽤了很长⼀段时间通过不断的研究揣摩,终于把RDLC报表给搞透了,今天跟⼤家做个总结,希望能够帮助到⼤家。
需求分析我想把datagridview 中的数据打印出来。
⾸先新建⼀个winfrom 窗体第⼆部将数据填充到datagridview中现在我要做的是把datagridview中的数据打印出来。
打印之前⾸先建⽴⼀个窗⼝,专门⽤于存放打印控件注意红⾊标记的地⽅,尤其是访问级别处最好给public 避免出现访问不了现象。
图解:新建俩个⽂件夹。
report存放报表⽂件。
RDataSource存放数据源图解:新建⼀个数据源及⼀个报表⽂件。
新建⼀个数据表,主要⽤于报表上的传值。
由于我的数据源中只有俩个字段,所以在这⾥对于新增相同名称的字段,需要注意的是datatype这个地⽅,对于设置的数据类型新增表后会出现需要你选择数据源的地⽅,这个地⽅默认是引导新建,我们刚刚⼿动新增了我们的数据源所以这⾥我们选择以下图。
注意这是关键,不然你的数据获取不到。
⽤对象类型。
我们新增的数据源在对象⾥⾯会体现出来,需要注意的是只选择Rdataset (左)下⾯的不需要选择。
点击完成这⾥为了⽅便起见我起了跟数据源相同的名称。
这⾥数据源已经出来了,还有我们只新增了⼀个数据集(可⽤数据集)在dataset⾥⾯可以新增多个数据集,不过引⽤的时候需要注意下这⾥的可⽤数据集。
因为我们刚刚引⽤了数据源,所以在这⾥也已经有了。
报表的设置基本好了,这边报表的设计好不好看,完全取决于你的审美啦。
这⾥我们在datagridview中新增⼀个事件需要引⽤using Microsoft.Reporting.WinForms;基本到这⾥就算完成了,试着F5下吧。
直接打印即可啦!!!!花了⼀中午的时间做的教程,希望能够帮助到各位苦逼的程序员屌丝們,如果你看了对你有帮助的话同事也希望帮助到其他新⼿的话,请加⼊我们的群:28851380问题及处理⽅法找不到报表解决办法如果报表设置不是很⼤的话可以采⽤始终复制哦,如果很⼤的话就使⽤复制最新的。
报表设计器RDL报表操作指南
葡萄城报表提供了一个高度集成的设计器,并以可视化、代码、脚本或表达式的方式来编 辑报表。它包括一个属性窗口,可以在该窗口中设置每个元素的属性。
设计器支持三种类型的报表:RDL报表、页面报表、区域报表。本章介绍RDL报表的具体 操作。
1. RDL 报表
Rdl报表给我们提供了最大限度的报表交互能力。可以放大和缩小控件,设置交互式排序, 设置钻取报表,还可以添加指向其它报表的钻取链接和指向报表内其它区域的书签链接。下面 详细介绍RDL报表。
文本框 文本框用于显示报表数据,Table 和 Matrix 单元格中默认显示的是文本框控件,当您从报 表资源管理器中将数据字段拖拽到报表界面时,生成的也是文本框控件。您可以通过表达式来 修改数据的显示行为。
1.5 属性窗口
在设计报表时,属性窗口是非常重要的工具。可以选择任何数据区域、控件或报表本身并 在属性窗口中查看其属性。默认情况下,此窗口位于报表设计区域的右侧。您可以通过单击属 性窗口顶部的“按字母顺序”或“按类别顺序”显示属性列表。
列表 列表中可以放置其他报表控件。它会根据数据集中的数据重复地显示区域内的控件。 距表 距表支持动态数量的行和列。此功能与交叉表和数据透视表类似。 形状 形状不与具体的数据关联。可用于显示一个控件的边界,或者高亮显示报表中特定区域的 数据,支持的形状有矩形,圆角矩形和椭圆。与Container不同的是,该控件内不能放置其他 控件。 迷你图 迷你图以一个很小的图像来展示数据的趋势,支持折线、面积、堆积条形、柱状和须状图 表类型。 子报表 子报表以子报表的形式显示其他报表的内容。可以从主报表中将参数传递给子报表以实现 数据过滤。需要注意的是每个子报表都以单独的报表运行,当处理大数据报表时,这种方案可 能会影响到运行的速度,这种情况下,数据区域是更为合理的选择。 表格 表格以行为单位进行数据显示。默认情况下,表格有三行、三列。表格列的设置是在设计 时完成,行会根据数据集中的数据进行重复显示。表格默认会显示表头、明细和表尾,表头和 表尾和删除,此外您还可以添加/删除分组头和分组尾,表格的单元格默认包含一个文本框控 件,不过您可以将文本框控件替换为其他任意类型的报表控件。 文档目录 用于制作报表目录。 地图 用于制作地图报表。
C#中使用RDLC报表
C#中使⽤RDLC报表转⾃:1 建⽴数据源启动VS2005新建⼀个窗体项⽬,命名为TestProj在左边的窗体内选择“添加新数据源”或在菜单上操作“添加新数据源”:选择后出现对话窗体,选择“数据库”,进⼊“下⼀步”:本数据源以SqlServer2000所提供的Northwind数据库为例,因此在数据库内选择驱动程序为SqlServer,具体操作视所⽤数据库⽽定(如果连接为Oracle,建议⽤Oracle所提供的ODP for .NET,地址:)。
选择数据源后,指定数据库⽂件,并进⾏测试,如果连接不通,请检查你的软件设置。
进⾏下⼀步,⾄显⽰出库⽂件内的表及视图,然后打开表,并选择其中的Employees,选择完成。
在数据源窗⼝中显⽰出所选择表及表内的字段,以备使⽤。
同时在资源管理器中,也可以看到新增加的数据⽂件。
2 报表浏览器在新建的窗体内,放⼊报表浏览控件:此报表浏览控件集成了报表查看及打印预览的功能,可直接输出⾄打印机,也可直接输出⾄Excel⽂件或PDF⽂件,对于喜欢看Excel表格的客户来说,这个报表控件⾮常不错。
关于此报表的来源及台前幕后的各种说法,请⾃⼰查询相关的⽹站。
3 建⽴报表⽂件选中报表浏览器控件后,在控件的右上⾓会出现⼀个⼩三⾓,点击后,出现⼀个菜单,选择“设计新报表”或在解决⽅案资源管理器中添加⼀个新的报表⽂件:双击“报表项”内的“表”,则设计空⽩表内⽣成⼀个表格,我们可以在表格内添加数据项。
此报表的设计⽅式类似于MS以前的VB下报表设计环境。
在报表设计器中,我将⼀份报表分为五个部分,从上⾄下为:报表标题区、列标题区、数据显⽰区、合计及页脚。
如果将报表的设计形式显⽰出页眉及页脚,报表的形式会看得更清楚些:选择页眉及页脚:显⽰结果:现在开始设计报表:在“页眉”区内放⼊⼀个⽂本框,将内容更改为“测试报表”,居中,字体放⼤加粗:从数据源窗⼝中选择合适的列,⽤⿏标拖到报表内的“详细信息”表格上,数据会⾃动填⼊:将设计的报表保存后,返回报表浏览窗⼝,并为报表浏览器选择我们设计的报表:选中报表⽂件后,菜单也有所改变:再为此报表⽂件指定数据源,选择数据源:确定,保存⽂件并运⾏测试⽂件。
RDLC报表
RDLC报表1.1简介在visual studio 2005之前,微软提供了一个报表服务(Reporting Service),其中也提供了报表自定义语言Report Definition Language, RDL语言),其报表定义为.rdl文件;Microsoft提供了针对这种报表的设计器,并且提供了在并提供了在WinForm和WebForm中使用这种报表的能力.微软定义了RDLC (Report Definition Language Client)也就是报表定义语言的客户端也称本地报表,该报表的后缀为.rdlc.本地报表和服务器报表存在一定的区别。
服务器报表rdl是指那些针对报表服务部署在服务器端的报表。
当报表被许多用户访问、报表以发布在报表服务器上,将其包含在所创建和部署的应用程序中、报表中有复杂的查询或者包含数据量大导致应用程序所在计算机的系统资源超载时,用报表的远程处理比较合适。
本地报表rdlc是指在本地的一些报表,在使用报表不一定要依赖于SQL Server,而是可以自主生成一些数据源然后以报表的方式显现出来。
本地处理模式的功能不及远程处理功能强大,适合中小型好报表和数据集的应用程序。
如果和rdl比较,rdlc可以看成是一个轻量级的报表。
在展现报表的时候我们需要使用到的一个控件叫ReportViewer,这种控件可以展现rdl报表,也可以展现rdlc报表。
从其属性可以看出,ReportView.ServerReport是针对rdl报表的,而ReportViewer.LocalReport是针对rdlc报表的。
1.2RDLC功能RDLC报表提供了以下主要功能:1、含有简单易用尤其是Table控件,非常方便字段在报表上的排列。
2、灵活的可定制性,用XML来实现通用的报表打印,可以用XML完全可以实现一个基于RDLC的报表设计器,这样可以让终端用户参与到报表的设计中,至少可以使他们能够修改报表中一些标题、表头等3、高度可编程性,在你的项目中,甚至不需要有一个报表文件,通过代码就可以实现报表生成、预览和打印等一系列操作;4、支持数据钻取功能;钻取报表是通过设置Navigation(HyperLink)和Parameters 来实现的,而具有子报表的钻取报表实现的功能类似Excel中数据透视表(Pivot Table)的功能,在一个复杂的交叉表中可以进行时间和商品两个维度的向下钻取。
RDLC报表使用手册
RDLC使用总结1、为什么要使用RDLC报表(简介)VS .NET开发中,用什么进行报表设计?可能的回答是Crystal Report,当然,必须承认Crystal Report的功能还是非常强大的,被Business Object收购以后,商业的成分也在逐渐增加,也形成了一定规模的用户群。
Visual Studio .NET进入2005版本以后,Crystal Report与IDE的结合更“紧密”了,至少我们看不到那个讨厌的注册窗口了。
但是,Microsoft似乎并不容忍在自己的超级工具中竟然没有报表工具,于是Report Viewer Control出现了,我把它的报表称为RDLC报表。
在VS .NET 2005之前,SQL Server Reporting Services中已经提供了一种被称为报表定义语言(Report Definition Language, RDL)的语言;在VS .NET 2005中,Microsoft提供了针对这种报表的设计器,并提供了在WinForm和WebForm中使用这种报表的能力。
Microsoft将这种报表的后缀定为RDLC,RDL仍然是Report Definition Language的缩写,那么C代表什么呢?C代表Client-side processing,凸显了它的客户端处理能力。
这种报表的易用性和可定制性让我们完全有理由放弃Crystal Report,让我们来看看它的强大功能吧:1)简单易用的控件,特别是Table控件,非常方便字段在报表上的排列;2)灵活的可定制性,用XML来描述一个报表相关的一切,不用说了吧;3)高度可编程性,在你的项目中,甚至不需要有一个报表文件,通过代码就可以实现报表生成、预览和打印等一系列操作;4)支持DrillThrough数据钻取功能;5)导出的Excel文件格式非常完美,而且并不需要安装Excel;6)数据源处理极其方便,开发人员可以自己接管数据库连接、取数,然后将数据结果赋值给RDLC的数据集即可。
VS2010_RDLC自带报表使用手册
RDLC使用总结1、为什么要使用RDLC报表(简介)VS .NET开发中,用什么进行报表设计?可能的回答是Crystal Report,当然,必须承认Crystal Report的功能还是非常强大的,被Business Object收购以后,商业的成分也在逐渐增加,也形成了一定规模的用户群。
Visual Studio .NET进入2005版本以后,Crystal Report与IDE的结合更“紧密”了,至少我们看不到那个讨厌的注册窗口了。
但是,Microsoft似乎并不容忍在自己的超级工具中竟然没有报表工具,于是Report Viewer Control出现了,我把它的报表称为RDLC报表。
在VS .NET 2005之前,SQL Server Reporting Services中已经提供了一种被称为报表定义语言(Report Definition Language, RDL)的语言;在VS .NET 2005中,Microsoft提供了针对这种报表的设计器,并提供了在WinForm和WebForm中使用这种报表的能力。
Microsoft将这种报表的后缀定为RDLC,RDL仍然是Report Definition Language的缩写,那么C代表什么呢?C代表Client-side processing,凸显了它的客户端处理能力。
这种报表的易用性和可定制性让我们完全有理由放弃Crystal Report,让我们来看看它的强大功能吧:1)简单易用的控件,特别是Table控件,非常方便字段在报表上的排列;2)灵活的可定制性,用XML来描述一个报表相关的一切,不用说了吧;3)高度可编程性,在你的项目中,甚至不需要有一个报表文件,通过代码就可以实现报表生成、预览和打印等一系列操作;4)支持DrillThrough数据钻取功能;5)导出的Excel文件格式非常完美,而且并不需要安装Excel;6)数据源处理极其方便,开发人员可以自己接管数据库连接、取数,然后将数据结果赋值给RDLC的数据集即可。
RDLC报表实例
RDLC 报表开发一、打开Visual Studio 2005,新建 网站,添加数据集,会自动调出数据集配置窗口TableAdapter如果上面的窗口没有自动调出,可以如下图可以调出上面的TableAdapter 窗口二、新建立数据库连接下面的这一步会将数据库连接保存到config 文件中下面的这一步可以,选择生成SQL的方式让我们先回到SQL Server Query Analyzer打开SQL Server 查询分析器在SQL程序中创建如下图的存储过程然后回到V isual Studio 2005,选择使用现在的存储过程,下一步,在这里,我们只需要选择所需要的存储过程,如刚才建立的EmployeeReport 即可完成TableAdapter向导的配置三、添加报表项创建报表项后,从左边工具栏拖动一个Table 到报表设计器中,选择网站数据集中的字段,把它拖动到表格的列中,通过页眉页脚可以设置复杂的打印样式。
四、新建立一个ASPX页面,拖动一个Report V iewer控件到页面中,在ReportViewer任务窗口中,选择刚才建立的rdl c文件,生成解决方案,然后执行就完成了报表开发。
[ 注意:如果此处报“未能找到在ObjectDataSource ObjectDataSource1 的TypeName 属性中指定的类型”的错误,说明数据源配置不正确,可以选择正确的配置即可。
]五、注意1. 刚才的SQL 脚本CREA TE PROC EmployeeReportASSELECT * FROM EmployeeGO实际的报表开发中,一定不要用SELECT * ,只取报表中需要查看的字段。
2. 有时候,可能需要用户选择一些条件,有选择性的查看报表。
而不是全部绑定数据如上图,用户可能只需要查看2008-9-29至2008-9-30时间段之间的数据则作法如下:先建立好如上图的ASPX页面,在View Report 事件中写如下的程序ReportViewer1.LocalReport.ReportPath = AppDomain.CurrentDomain.BaseDirectory + "/Report/Request.rdlc";DateTime dtFrom =Convert.ToDateTime(txtDateFrom.Text);DateTime dtTo =Convert.ToDateTime(txtDateTo.Text);string requester = txtRequester.Text;string dept = txtRequestDept.Text;string material = ddlMaterial.SelectedV alue;string iprstatus = ddlStatus.SelectedV alue;DataTable reqrpt = ReportDB.RequestReport(dtFrom, dtTo, material, dept,requester, iprstatus);if (reqrpt != null){ReportViewer1.LocalReport.DataSources.Clear();ReportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WebForms.ReportDataSource("Request_RequestReport", reqrpt)); ReportViewer1.LocalReport.Refresh();}ReportViewer1.LocalReport.Refresh();根据用户所选的参数,把数据值传到SQL语句中即可.下面是RequestReport方法的源码DataTable RequestReport(DateTime dtFrom, DateTime dtTo, string pMaterial, string pDept, string pRequester, string pIPRStatus) {string MySQL = Purchase;string whDate = " RequestDate BETWEEN '{0}' AND '{1}' ";MySQL = MySQL + string.Format(whDate, dtFrom, dtTo);string whMaterial = " AND MaterialCode='{0}' ";if (pMaterial != "ALL"){MySQL = MySQL + string.Format(whMaterial, pMaterial);}string whDept = " AND RequestDepartment='{0}' ";MySQL = MySQL + string.Format(whDept, pDept);string whRequester=" AND Requester='{0}' ";if(pRequester!="ALL")MySQL = MySQL + string.Format(whRequester, pRequester);string whIPRStatus = " AND IPRStatus={0} ";if (pIPRStatus != "ALL"){MySQL = MySQL + string.Format(whIPRStatus, pIPRStatus);}IDataProvider privider = DataProvider.CreateDataProvider();DataSet ds = privider.RetriveDataSet(MySQL);if (ds != null && ds.Tables.Count > 0)return ds.Tables[0];elsereturn null;}const string Purchase="SELECT SerialNO,LedgerAcc,CostCenter,Requester,"+" RequestDate,RequestDepartment,MaterialCode, " +" Brand,Specifications,Unit,Quantity,Usage, "+" ExpectedDeliveryDate,Currency "+" ,Quotation1Supplier,Quotation1UnitPrice,Quotation1Amount, "+" Quotation2Supplier,Quotation2UnitPrice,Quotation2Amount, "+" Quotation3Supplier, Quotation3UnitPrice, Quotation3Amount, "+" ProposedQuotationSupplier, ProposedQuotationUnitPrice, "+" ProposedQuotationAmount,QuotationRemarks ,IPRStatus,QtyTo, UnitPriceTo FROM IPR WHERE ";3. 设计报表时,可以用上述的方法,实际运行时,可以替换成SQL 语句,传到ReportDataSource中即可,只要相应的表结构字段是存在的。
RDLC报表
RDLC报表使用步骤主要介绍使用业务对象数据进行报表设计的过程。
(1)在项目上右击,添加报表。
(2)打开报表属性对话框(3)添加Model程序集引用(4)重新生成Model,这样的话,点击菜单上的“数据”,才会有添加数据新数据源和显示数据源项。
(5)若界面上没报表数据工具条,则点击菜单上的视图,报表数据,这样就调出了报表数据工具条。
若界面上有的话,此步省略。
(6)在菜单上选择数据,添加数据源,在弹出的对话框选择对象,然后即可选择Model 下的字段了。
(7)在报表工具表上,点击新建,添加数据集,弹出对话框,给数据集命名,并选择相应的Model。
(8)到此为止就可以报表的设计了。
报表的布局,想怎么弄就怎么弄吧。
(9)报表设计好了,需要给一个浏览报表的窗口,提供这个功能的就ReportView控件,在工具箱中可以找到,托到一个Web页面上即可。
还要加一个”ScripManager”控件,这个控件是在AJAX Extensions项下面,只要托到页面上即可,不用管它了。
(10)接下来需要给ReportView控件配置数据源了。
有两种方法。
一种是像给GirdView、FormView选择数据源一样,点击ReportView控件右侧的三角形符号,弹出一个小窗口,选择新建数据源,选择对象,然后选择BLL下的方法即,这将自动将ObjectDataSource加入到这个页面来。
第二种方法,是通过手写代码来配置数据源,这种方法适应比较复杂的情况,比如你需要对List集合下的字段进行改动,再配置给ReportView。
后面我给了一小段代码,这段代码是如何将报表按照数据库中的址将图片加载到报表中的,很典型。
(11)这样就做好了,接下来是发布了。
(12)注意,发布后,必须将RDLC报表拷到发布的目录下,覆盖掉发布过程中生成的RDLC 文件(这个文件只有1K)。
存在的问题RDLC这种报表,不支持直接打印。
必须将报表导出到PDF WORD EXCEL中。
报表打印在打印或打印预览前如何获取报表
报表打印:在打印或打印预览前如何获取报表页数
疯狂代码 / ĵ:http://Delphi/Article11907.html
我们有时需要在打印前获取报表打印页数, 比如我们需要在页眉或页脚中打印“共 xx 页 第 xx 页”那如何实现呢? QuickRep生成Report的前我们是无法得知报表页数而QuickReport是在打印或打印预览时才生成报表,换言的我们只有在 打印或打印预览前先将报表生成次才能获取打印页数.生成报表思路方法是 Prepare参考以下例子: ;
... ;
var nPageCount:eger; ;
begin ;
{...} ;
QuickRep1.Prepare; ;
nPageCount:=QuickRep1.QRPrer.PageCount; ;
QuickRep1.QRPrer.Free; ;
QuickRep1.QRPrer:=nil; ;
{在此修改QuickRep1实现在页眉或页脚中打印“共 xx 页 第 xx 页” ... } ;
QuickRep1.PreView; ;
{...} ;
End; ;
2009-2-12 3:38:15
疯狂代码 /。
第十章 报表打印(DCS用户手册)
第十章报表打印
1. 概述
报表打印程序是XDPS操作员站运行的应用程序,操作员通过此程序可以向报表站发送报表打印命令,由报表站报表再现程序完成报表打印任务。
2. 运行环境
报表打印程序必须运行在Windows9x或Windows NT下,并且在运行此程序前必须先运行Netwin.exe。
3. 软件组成
报表打印程序由报表打印执行程序Tabprn.exe和报表打印配置文件Tabprn.ini组成。
4. 配置文件Tabprn.ini说明
报表打印配置文件Tabprn.ini用于配置报表站的站号和报表配置程序cfg.xls中配置的报表页名称。
[config]段中Tab Station字段用于配置报表站的站号。
[Period Tab]段中1,2,…,n用于配置报表页名称。
举例:
[config]
Tab Station = 40
[Period Tab]
1=报表页名1
2=报表页名2
5.用户界面
报表打印程序提供给用户可以选择报表和选择打印时间的用户界面,用户需要打印周期型报表,那么用户就必须选择要打印的报表页名称和报表的起始时间;用户需要打印
触发型报表、追忆记录或SOE记录,那么用户就要填入要打印内容的起始时间和结束时间。
用户确认要打印的内容后,报表打印程序就将此选择的内容形成报表站可以接收的命令发
送给报表站。
报表站接收此命令后,打印出用户所需要的报表。
csdn rdlc报表使用手册
csdn rdlc报表使用手册RDLC(Report Definition Language Client)是微软提供的一种报表定义语言,用于创建和部署本地报表。
RDLC报表使用基于XML的RDLC文件格式,可以在客户端应用程序中使用,不需要依赖于服务器端的报表服务。
RDLC报表使用手册一、RDLC报表的基本概念1.报表设计器:RDLC报表的设计工具,可以在Visual Studio中打开和编辑。
2.数据集:报表所需的数据源。
可以是数据表、数据集以及通过查询语句获取的数据。
3.数据源:报表绑定的数据源对象。
4.数据绑定:将报表中的控件与数据源中的字段进行关联。
5.表格:报表中用于显示数据的主要控件,可以设置列、行、组和总计等。
6.图表:报表中用于可视化数据的控件,可以用于展示柱状图、折线图、饼图等。
7.矩阵:报表中用于显示交叉表格的控件,可以实现多维数据的展示。
8.列表:报表中用于显示动态数据的控件,可以根据数据集的行数重复显示。
二、RDLC报表的创建和设计步骤1.打开Visual Studio,并创建一个新的Windows Forms项目。
2.在项目中添加RDLC报表文件,可以右键项目,选择添加->新建项,在模板中选择RDLC文件。
3.在报表设计器中,可以添加数据源和数据集。
选择数据源对象,并设置查询语句或连接字符串。
4.在报表设计器中,通过拖拽控件的方式添加表格、图表、矩阵或列表等控件。
5.设置控件的属性和样式,如字体、颜色、边框等。
6.设置数据绑定,将报表中的控件与数据源中的字段关联起来。
7.设置表格、图表、矩阵或列表等的相关属性,如分组、排序、总计等。
8.预览或发布报表,可以在报表设计器中预览报表效果,也可以在应用程序中调用报表进行展示。
三、RDLC报表的数据绑定和常用控件1.数据绑定:可以通过设置控件的Data Source属性,选择报表的数据集。
然后通过设置控件的Value属性,将控件与数据集中的字段进行绑定。
C#中直接打印Report文件(rdlc)
C#中直接打印Report ⽂件(rdlc )Visual Studio ⾃带的报表⽂件(rdlc ,后⾯提到的报表,都指rdlc 报表⽂件)虽然功能相对不是⼗分强⼤,但应付⼀般的报表要求也是绰绰有余了。
关于rdlc 报表的使⽤和设计⽅法,这⾥就不做讲解了,本⽂主要介绍⼀下如何不使⽤报表预览控件(ReportViewer ),直接将报表的内容在打印机上打印出来。
⼀般情况下,我们设计好报表后,在程序运⾏的时候,会将其加载到ReprotViewer 控件中进⾏预览并打印,但有些情况下,我们不想预览报表的内容,⽽直接将其在打印机上打印出来,⼜该怎么做呢?要想实现直接打印的功能,我们需要⽤到.Net 提供的2个对象,LocalReport 和PrintDocument 。
LocalReport 对象负责加载⼀个报表⽂件⽣成实际的报表并将报表按照知道的格式输出,PrintDocument 对象负责将LocalReport 的输出内容发送到打印机打印。
具体的实现步骤如下:Step 1: 声明⼀个LocalReport 对象并加载⼀个报表⽂件(假定我们已经设计好⼀个报表⽂件,名称为PrintMe.rdlc )。
7: //刷新报表中的需要呈现的数据8: report.Refresh();Step 2: 将报表的内容输出为指定格式的数据流。
10: "</DeviceInfo>"; 11: Warning[] warnings;12: //将报表的内容按照deviceInfo 指定的格式输出到CreateStream 函数提供的Stream 中。
式,这⾥指定为Image 格式(图形格式);第⼆个参数为⼀个XML 格式的字符串,⽤来描述输出格式的详细信息;第三个参数是⼀个回调函数(CreateStreamCallback 委托类型),你需要为这个参数声明⼀个函数,Render ⽅法会将报表的内容输出到这个函数返回的Stream 对象的实例中,这个函数看上去类似下⾯的声明 10: m_streams.Add(stream); 11: return stream;12: }你可以使⽤这个函数的参数执⾏更多的操作,具体内容请参考。
RDLC在不预览的情况下打印本地报表
演练:在不预览的情况下打印本地报表Visual Studio 2012其他版本∙Visual Studio 2010∙Visual Studio 2008∙Visual Studio 2005此主题尚未评级 - 评价此主题本演练演示如何使用LocalReport对象和CreateStreamCallback回调函数以编程方式在不查看的情况下打印报表。
先决条件您必须具有访问示例报表和数据源的权限。
有关更多信息,请参见用于打印演练的示例数据和报表。
执行下列步骤可创建控制台应用程序项目。
创建新的控制台应用程序项目1.在“文件”菜单上,指向“新建”,然后选择“项目”。
2.在“已安装的模板”窗格中,选择“C#”或“Visual Basic”。
根据Visual Studio 中的启动设置,“C#”或“Visual Basic”节点可能会显示在“其他语言”下。
3.在“模板”窗格中,选择“控制台应用程序”。
4.在“名称”框中,键入项目的名称:PrintLocalReport。
5.在“位置”框中,输入要保存项目的目录,或者单击“浏览”以导航到该目录。
6.单击“确定”。
项目与显示“Program”代码文件的“代码”窗口一起打开。
添加引用1.从“项目”菜单中,选择“添加引用”。
2.在“添加引用”对话框的“.NET”选项卡上,选择System.Drawing、System.Windows.Forms和Microsoft.ReportViewer.Winforms。
3.单击“确定”。
添加现有的 report.rdlc 和 data.xml 文件1.从“项目”菜单中选择“添加现有项”。
随即将显示“添加现有项”对话框。
2.定位到保存 report.rdlc 和 data.xml 的文件夹。
然后选择这两个文件。
3.单击“添加”。
这两个文件将作为项目的一部分显示在解决方案资源管理器中。
添加代码1.Program 代码文件应该已经打开并处于待编辑状态。
RDLC报表使用手册
RDLC使用手册1、为什么要使用RDLC报表为什么要使用RDLC报表,蜡人张在其博文“RDLC报表(一)”中已经很好的阐述了这一点。
(源码网整理:)VS .NET开发中,用什么进行报表设计?可能的回答是Crystal Report,当然,必须承认Crystal Report的功能还是非常强大的,被Business Object收购以后,商业的成分也在逐渐增加,也形成了一定规模的用户群。
Visual Studio .NET进入2005版本以后,Crystal Report与IDE的结合更“紧密”了,至少我们看不到那个讨厌的注册窗口了。
但是,Microsoft似乎并不容忍在自己的超级工具中竟然没有报表工具,于是Report Viewer Control出现了,我把它的报表称为RDLC报表。
在VS .NET 2005之前,SQL Server Reporting Services中已经提供了一种被称为报表定义语言(Report Definition Language, RDL)的语言;在VS .NET 2005中,Microsoft提供了针对这种报表的设计器,并提供了在WinForm和WebForm中使用这种报表的能力。
Microsoft 将这种报表的后缀定为RDLC,RDL仍然是Report Definition Language的缩写,那么C代表什么呢?C代表Client-side processing,凸显了它的客户端处理能力。
这种报表的易用性和可定制性让我们完全有理由放弃Crystal Report,让我们来看看它的强大功能吧:1)简单易用的控件,特别是Table控件,非常方便字段在报表上的排列;2)灵活的可定制性,用XML来描述一个报表相关的一切,不用说了吧;3)高度可编程性,在你的项目中,甚至不需要有一个报表文件,通过代码就可以实现报表生成、预览和打印等一系列操作;4)支持DrillThrough数据钻取功能;5)导出的Excel文件格式非常完美,而且并不需要安装Excel;6)数据源处理极其方便,开发人员可以自己接管数据库连接、取数,然后将数据结果赋值给RDLC的数据集即可。
RDLRDLC批量单据打印-电脑资料
RDLRDLC批量单据打印-电脑资料使用RDL或RDLC进行单据打印时,单张单据打印比较直观简单,无需说明,。
下面我们来谈一下批量单据打印的实现方法。
以下以RDL的ReportBuilder设计环境为例进行讲解,RDLC、VS设计环境同理。
实现效果如下。
一、基本思路数据集:将单据表头、表体合并为一个数据集。
例如将以下两个表合并为一个DataSet查询:单据号码、客户代码、部门、货品代码、货品名称、仓库、数量、单价、金额等。
表头字段:单据号码、客户代码、部门等;表体字段:项次、货品代码、货品名称、仓库、数量、单价、金额等字段;控件:列表、矩形、文本框、表。
使用“列表”控件作为单据的边界,并在列表中设置一个“单号”分组,实现分页,在“列表”中设计单据表头及明细表体。
二、详细步骤1. 建立列表在主体中插入一个列表,并指定其数据源。
选择列表,在行组中用鼠标右键选择详细信息,添加以“单据号码”分组。
删除“详细信息”组及自动新增的“单据号码”列。
此时得到了一个单据容器,用以容纳我们即将要设计的单据。
2. 列表与矩形细心一点你会发现,在我们刚才插入的“列表”控件中,还有嵌套了一个“矩形”控件,这是布局所需要的。
如果没有矩形的话,我们拖进列表中的字段,将会成为列表本身的值。
所以不管是列表、表或矩阵,如果想在T ablix表格之中再进行布局,则先铺一个矩形是非常必要的。
因为有矩形的存在,所以我们可以像普通报表一样,在列表中布置表头文本框,和表体详细数据。
不再赘述。
3. 页眉页脚将每页都有重复显示的东西放在页眉和页脚。
当然还有表格的表头也要设置为在每页中重复。
方法是先选中“表”,进入高级模式,在行组中选择作为表头的“静态”行,在属性中将RepeatOnNewPage设置为True。
如果有些信息需要在每页中都要显示,但因为针式打印中存在换页切纸问题,所以把一些重要信息设置在表中,也可以通过设置RepeatOnNewPage属性,在每页中显示。
不打开文件也能看到打印内容?这样的Word打印方法你见过吗?
不打开文件也能看到打印内容?这样的Word打印方法你见过吗?很多小伙伴没有整理文件的习惯,电脑里乱糟糟的,当老板要你打印某一份文件的时候,打开文件夹是这样的:是不是一脸懵逼?哪个是老板要的文件啊?一个一个点开看不知道要找到什么时候!嘿嘿!小编有办法!这就来教你如何不点开文件,也能看到文件内容!一、预览打印1、预览窗格首先我们点击【组织】——【布局】——【预览窗格】,打开【预览窗格】功能~Win10系统的话是点击【查看】——【预览窗格】然后我们点击其中任意一个文档,我们就可以在右边预览到文档的内容了~2、直接打印找到我们要打印的文件之后,我们直接右键点击,选择【打印】,就可以直接打印了~二、特殊打印技巧除了上面说到的这种情况,我们在打印Word的时候还会遇到各种各样的特殊情况,小编在这里整理了3种特殊情况的打印方法,希望对大家有所帮助!1、打印部分内容老板只想要打印某部分内容,这部分内容并不是整页的,这要怎么打印呢?简单!我们先选中这部分内容,然后再点击【打印】——【打印所有页】——【打印所选内容】,这样就只会打印你选中的那部分内容了~2、打印某页如果老板只想要打印某一页内容的话,怎么呢?我们可以将鼠标光标移动到我们要打印的那一页,然后点击【文件】——【打印】,在【打印所有页面】中选择【打印当前页】就OK啦。
3、隐藏不需要打印的内容如果怕打印的时候将要打印的内容和不要打印的内容弄混了,我们还可以隐藏不需要打印的内容!我们选中要隐藏的内容,点击【字体】选项卡右下角的小标志,然后在弹出来的窗口中勾选【隐藏】即可~好啦,这就是今天要分享给大家的Word打印技巧啦!如果你还有更好的打印技巧的话,可以在评论区分享哦!。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
演练:在不预览的情况下打印本地报表Visual Studio 2012其他版本Visual Studio 2010Visual Studio 2008Visual Studio 2005此主题尚未评级 - 评价此主题本演练演示如何使用 LocalReport 对象和 CreateStreamCallback 回调函数以编程方式在不查看的情况下打印报表。
先决条件您必须具有访问示例报表和数据源的权限。
有关更多信息,请参见用于打印演练的示例数据和报表。
执行下列步骤可创建控制台应用程序项目。
创建新的控制台应用程序项目1. 在“文件”菜单上,指向“新建”,然后选择“项目”。
2. 在“已安装的模板”窗格中,选择“C#”或“VisualBasic”。
根据 Visual Studio 中的启动设置,“C#”或“Visual Basic”节点可能会显示在“其他语言”下。
3. 在“模板”窗格中,选择“控制台应用程序”。
4. 在“名称”框中,键入项目的名称:PrintLocalReport。
5. 在“位置”框中,输入要保存项目的目录,或者单击“浏览”以导航到该目录。
6. 单击“确定”。
项目与显示“Program”代码文件的“代码”窗口一起打开。
添加引用1. 从“项目”菜单中,选择“添加引用”。
2. 在“添加引用”对话框的“.NET”选项卡上,选择System.Drawing、System.Windows.Forms 和Microsoft.ReportViewer.Winforms。
3. 单击“确定”。
添加现有的 report.rdlc 和 data.xml 文件1. 从“项目”菜单中选择“添加现有项”。
随即将显示“添加现有项”对话框。
2. 定位到保存 report.rdlc 和 data.xml 的文件夹。
然后选择这两个文件。
3. 单击“添加”。
这两个文件将作为项目的一部分显示在解决方案资源管理器中。
添加代码1. Program 代码文件应该已经打开并处于待编辑状态。
如果该文件尚未打开,请在“解决方案资源管理器”窗口中双击Program.cs 或 Module1.vb 文件。
2. 根据您的编程语言选择下面的代码,并用其替换“Program”文件中的现有代码。
注意如果您的计算机上没有安装名为 Microsoft XPSDocument Writer 的打印机,请将粗体代码更改为您计算机上的指定打印机。
3. C#4. 复制5. using System;6. using System.IO;7. using System.Data;8. using System.Text;9. using System.Drawing.Imaging;10. using System.Drawing.Printing;11. using System.Collections.Generic;12. using System.Windows.Forms;13. using Microsoft.Reporting.WinForms;14.15. public class Demo : IDisposable16. {17. private int m_currentPageIndex;18. private IList<Stream> m_streams;19.20. private DataTable LoadSalesData()21. {22. // Create a new DataSet and read sales datafile23. // data.xml into the first DataTable.24. DataSet dataSet = new DataSet();25. dataSet.ReadXml(@"..\..\data.xml");26. return dataSet.Tables[0];27. }28. // Routine to provide to the report renderer, inorder to29. // save an image for each page of the report.30. private Stream CreateStream(string name,31. string fileNameExtension, Encoding encoding,32. string mimeType, bool willSeek)33. {34. Stream stream = new MemoryStream();35. m_streams.Add(stream);36. return stream;37. }38. // Export the given report as an EMF (EnhancedMetafile) file.39. private void Export(LocalReport report)40. {41. string deviceInfo =42. @"<DeviceInfo>43. <OutputFormat>EMF</OutputFormat>44. <PageWidth>8.5in</PageWidth>45. <PageHeight>11in</PageHeight>46. <MarginTop>0.25in</MarginTop>47. <MarginLeft>0.25in</MarginLeft>48. <MarginRight>0.25in</MarginRight>49. <MarginBottom>0.25in</MarginBottom>50. </DeviceInfo>";51. Warning[] warnings;52. m_streams = new List<Stream>();53. report.Render("Image", deviceInfo,CreateStream,54. out warnings);55. foreach (Stream stream in m_streams)56. stream.Position = 0;57. }58. // Handler for PrintPageEvents59. private void PrintPage(object sender,PrintPageEventArgs ev)60. {61. Metafile pageImage = new62. Metafile(m_streams[m_currentPageIndex]);63.64. // Adjust rectangular area with printermargins.65. Rectangle adjustedRect = new Rectangle(66. ev.PageBounds.Left -(int)ev.PageSettings.HardMarginX,67. ev.PageBounds.Top -(int)ev.PageSettings.HardMarginY,68. ev.PageBounds.Width,69. ev.PageBounds.Height);70.71. // Draw a white background for the report72. ev.Graphics.FillRectangle(Brushes.White,adjustedRect);73.74. // Draw the report content75. ev.Graphics.DrawImage(pageImage,adjustedRect);76.77. // Prepare for the next page. Make sure wehaven't hit the end.78. m_currentPageIndex++;79. ev.HasMorePages = (m_currentPageIndex <m_streams.Count);80. }81.82. private void Print()83. {84. if (m_streams == null || m_streams.Count ==0)85. throw new Exception("Error: no stream toprint.");86. PrintDocument printDoc = new PrintDocument();87. if (!printDoc.PrinterSettings.IsValid)88. {89. throw new Exception("Error: cannot findthe default printer.");90. }91. else92. {93. printDoc.PrintPage += newPrintPageEventHandler(PrintPage);94. m_currentPageIndex = 0;95. printDoc.Print();96. }97. }98. // Create a local report for Report.rdlc, loadthe data,99. // export the report to an .emf file, andprint it.100. private void Run()101. {102. LocalReport report = new LocalReport();103. report.ReportPath = @"..\..\Report.rdlc"; 104. report.DataSources.Add(105. new ReportDataSource("Sales",LoadSalesData()));106. Export(report);107. Print();108. }109.110. public void Dispose()111. {112. if (m_streams != null)113. {114. foreach (Stream stream in m_streams) 115. stream.Close();116. m_streams = null;117. }118. }119.120. public static void Main(string[] args)121. {122. using (Demo demo = new Demo())123. {124. demo.Run();125. }126. }127. }。