RDLC实现报表打印功能设置
使用RDLC报表(三)--向RDLC报表传入参数
使⽤RDLC报表(三)--向RDLC报表传⼊参数在使⽤报表向客户展⽰结果数据时,实时的在报表中显⽰某些特定的数据是必需的,如:显⽰的部门、打印的⽇期等。
本⽂只简单的演⽰向报表内传⼊⼀个字符值。
如有其它问题,欢迎讨论。
1、新建⼀个⼯程TestReport,⼀个Form窗体,放⼊⼀个TextBox、⼀个Button按钮,再放⼊⼀个ReportViewer控件。
2、在ReportViewer上选择新建⼀个报表3、在打开的报表设计器中,选择⼯具栏的“报表”中的“报表参数”,新加⼀个参数,名称为content,数据类型为string,确定。
4、在报表设计器的页⾯上放⼊⼀个⽂本框,在⽂本框上按⿏标右键->属性,在“⽂本框属性”窗⼝中,选择“常规”选项卡内下部的“值”后⾯的“编辑表达式”按钮(就是那个Fx),在此窗⼝内,左下框内选择参数,在右下框将会出现在上⼀步中设置的参数,双击此参数,在上⾯的框内将出现所需要的表达式:=Parameters!content.Value。
保存此报表。
报表默认名称为Report1.rdlc。
5、在Form窗体内双击按钮,编写如下代码:this.reportViewer1.LocalReport.ReportEmbeddedResource = "TestReport.Report1.rdlc";ReportParameter rp = new ReportParameter("content", this.textBox1.Text);this.reportViewer1.LocalReport.SetParameters(new ReportParameter[] { rp });this.reportViewer1.RefreshReport();6、运⾏⼯程,在⽂本输⼊框内输⼊数据,按下按钮,数据是不是已经传⼊报表了?。
关于VS2010RDLC报表的详细使用说明
关于VS2010RDLC报表的详细使⽤说明各位技术屌丝们好,之前我⽤了很长⼀段时间通过不断的研究揣摩,终于把RDLC报表给搞透了,今天跟⼤家做个总结,希望能够帮助到⼤家。
需求分析我想把datagridview 中的数据打印出来。
⾸先新建⼀个winfrom 窗体第⼆部将数据填充到datagridview中现在我要做的是把datagridview中的数据打印出来。
打印之前⾸先建⽴⼀个窗⼝,专门⽤于存放打印控件注意红⾊标记的地⽅,尤其是访问级别处最好给public 避免出现访问不了现象。
图解:新建俩个⽂件夹。
report存放报表⽂件。
RDataSource存放数据源图解:新建⼀个数据源及⼀个报表⽂件。
新建⼀个数据表,主要⽤于报表上的传值。
由于我的数据源中只有俩个字段,所以在这⾥对于新增相同名称的字段,需要注意的是datatype这个地⽅,对于设置的数据类型新增表后会出现需要你选择数据源的地⽅,这个地⽅默认是引导新建,我们刚刚⼿动新增了我们的数据源所以这⾥我们选择以下图。
注意这是关键,不然你的数据获取不到。
⽤对象类型。
我们新增的数据源在对象⾥⾯会体现出来,需要注意的是只选择Rdataset (左)下⾯的不需要选择。
点击完成这⾥为了⽅便起见我起了跟数据源相同的名称。
这⾥数据源已经出来了,还有我们只新增了⼀个数据集(可⽤数据集)在dataset⾥⾯可以新增多个数据集,不过引⽤的时候需要注意下这⾥的可⽤数据集。
因为我们刚刚引⽤了数据源,所以在这⾥也已经有了。
报表的设置基本好了,这边报表的设计好不好看,完全取决于你的审美啦。
这⾥我们在datagridview中新增⼀个事件需要引⽤using Microsoft.Reporting.WinForms;基本到这⾥就算完成了,试着F5下吧。
直接打印即可啦!!!!花了⼀中午的时间做的教程,希望能够帮助到各位苦逼的程序员屌丝們,如果你看了对你有帮助的话同事也希望帮助到其他新⼿的话,请加⼊我们的群:28851380问题及处理⽅法找不到报表解决办法如果报表设置不是很⼤的话可以采⽤始终复制哦,如果很⼤的话就使⽤复制最新的。
RDLC在不预览的情况下打印本地报表
演练:在不预览的情况下打印本地报表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 代码文件应该已经打开并处于待编辑状态。
RDLC报表实例
RDLC 报表开发一、打开Visual Studio 2005,新建 网站,添加数据集,会自动调出数据集配置窗口TableAdapter如果上面的窗口没有自动调出,可以如下图可以调出上面的TableAdapter 窗口二、新建立数据库连接下面的这一步会将数据库连接保存到config 文件中下面的这一步可以,选择生成SQL的方式让我们先回到SQL Server Query Analyzer打开SQL Server 查询分析器在SQL程序中创建如下图的存储过程然后回到Visual Studio 2005,选择使用现在的存储过程,下一步,在这里,我们只需要选择所需要的存储过程,如刚才建立的EmployeeReport 即可完成TableAdapter向导的配置三、添加报表项创建报表项后,从左边工具栏拖动一个Table 到报表设计器中,选择网站数据集中的字段,把它拖动到表格的列中,通过页眉页脚可以设置复杂的打印样式。
四、新建立一个ASPX页面,拖动一个Report Viewer控件到页面中,在ReportViewer任务窗口中,选择刚才建立的rdlc文件,生成解决方案,然后执行就完成了报表开发。
[ 注意:如果此处报“未能找到在ObjectDataSource ObjectDataSource1 的TypeName 属性中指定的类型”的错误,说明数据源配置不正确,可以选择正确的配置即可。
]五、注意1. 刚才的SQL 脚本CREATE 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.SelectedValue;string iprstatus = ddlStatus.SelectedValue;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打印时多出空白页面(reportviewer)
rdlc打印时多出空⽩页⾯(reportviewer)
输⼊简体字,点下⾯繁体字按钮进⾏在线转换.RDLC报表设计好后,在ReportViewer预览报表时,页数都正常;但在切换為整页模式时,常造成多了不少空⽩页出来。
第⼀时间觉得不可思议,在ReportViewer看来正常,怎可能在整页预览时,格式会跑掉?如果在整页预览时格式跑掉,那在列印时也⼀定是这样的情形。
ReportViewer会将RDLC所设计的报表档显⽰其中,但和实际纸张列印时,并不是如此,因此时就要检查RDLC报表本⾝的⼤⼩。
1.先⾄Report.rdlc报表设计的页⾯,选择功能表上的[报表]->[报表属性],在[配置]的页籤中记录著输出报表的纸张⼤⼩,预设应為A4直式的纸张(页宽:21cm,页⾼:29.7cm,左右上下边界:2.5cm),记下这些值。
2.检查Report.rdlc的属性视窗中[主体]属性的Size值,它的宽度Width要⼩於[报表属性]中的(页宽) – (左边界) – (右边界)。
3.调整后再整页预览看看,多调⼏次应就不会再產⽣太多的空⽩页了。
基于RDLC语言的批量打印系统的设计与实现
础信息 , 为以后的操作形成基础数据 ; 学生在线完 善其他信息 , 确认无误后提交给县级管理人员审
核; 县 级 管理 人 员 审 核后 上报 给 市州 管 理 员 ; 最 后
现基于 B / S模式的登记 表管理 系统 。 提高工 作效率且方 便
档 的 长 度 和 宽度 、 上 下 左 右边 距 值 的设 置 和表 格
中行宽行高的设置等 。 把基础信 息和学生完善 的 信息按照文档 的模板格式呈现在网页上 , 同时在
作者简介 : 纪娟( 1 9 8 3 一 ) , 女, 安徽安庆人 , 讲师 , 硕 士, 研 究方 向为计算机 网络 与分布 式系统 ; 龚艺( 1 9 7 9 一 ) . 女, 四川成都 人,
第 l 9卷第 4期
2 0 1 7年 1 2月
河 北 软 件 职 业 技 术 学 院 学 报
J o u r n a l o f He b e i S o ,wa r e I n s t i t ut e
Vo 1 . 1 9No. 4 De c . 20l 7
文章 编 号: l 6 7 3 — 2 0 2 2 【 2 0 1 7 ) 0 4 — 0 0 1 3 - 0 4
并提供 了在 Wi n F o r m和 We b F o r m 中使用 这种报
表的能力。 Mi c r o s o f t将 这 种 报 表 的 后 缀 定 为
每 期 有 2万 多 学 生 毕 业 , 对 于 省 校 打 印人 员
来说工作量巨大。 如果再按分校来分类 归档登记
表, 如 果 没有 按 分 校批 量 打 印 的功 能 , 打 印和 分类 归 档 会 耗 费 大 量 的 人 力 和物 力 。目前 实 现 批 量 打 印有 两 种 方 法 : 使用报 表和使用 J s控 件 。 报 表 比 较复杂 , 初 学 者不 容 易 上 手 , J S控件 是 基 于 HT ML
RDLC报表格式设置
RDLC报表格式设置Public Sub Main()Display string representations of numbers for en-us cultureDim ci As New Culturelnfo( "en-us")'Output floating point values DimfloatingConsole.WriteLine( floating.ToString(Console.WriteLine( floating.ToString( Console.WriteLine(As Double = 10761.937554"C: {0}" ,—"C", ci)) "E: {0}" , _"E03", ci)) "F: {0}" , _Displays "C: $10,761.94"Displays "E: 1.076E+004"floating.ToString( "F04", ci)) ' Displays "F: 10761.9376"Console.WriteLine( "G: {0}" J 一floating.ToString( "G", ci)) ' Displays "G 10761.937554"Console.WriteLine( "N: {0}" J 一floating.ToString( "N03", ci)) ' Displays "N: 10,761.938"Console.WriteLine( "P: {0}" J 一(floating/10000).ToString( "P02", ci)) ' Displays "P: 107.62 %"Console.WriteLine( "R: {0}" J 一floating.ToString( "R", ci)) ' Displays "R 10761.937554"Console.WriteLine()'Output integral valuesDim integral As Integer = 8395Console.WriteLine( "C: {0}" J 一integral.ToString( "C", ci)) 'Displays "C: $8,395.00"Console.WriteLine( "D: {0}" J 一integral.ToString( "D6")) 'Displays D: 008395""Console.WriteLine( "E: {0}" J 一integral.ToString( "E03", ci)) ' Displays "E: 8.395E+003"Console.WriteLine( "F: {0}" J 一integral.ToString( "F01", ci)) 'Displays "F: 8395.0"Console.WriteLine( "G: {0}" J 一integral.ToString( "G", ci)) 'Displays "G: 8395"Console.WriteLine( "N: {0}" J 一integral.ToString( "N01", ci)) 'Displays "N: 8,395.0"Console.WriteLine( "P: {0}" J 一(integral/10000).ToString( "P02", ci)) ' Displays "P: 83.95 %"Console.WriteLine( "X: 0x{0}" J 一Console.WriteLine()End SubDimmsgShortDate As String = "(d) Short date:Dim msgLongDate As String = "(D) Long date:Dim msgShortTime As String = "(t) Short time:Dim msgLongTime As String = "(T) Long time:.Dim msgFullDateShortTime As String = _"(f) Full date/short time:..""(F) Full date/long time:...""(g) General date/short time:.""(G) General date/long time (default):"vbCrLf &"(u) Universal sortable (invariant):"vbCrLf &integral.ToString( "X", ci)) 'Displays "X: 0x20CB"Dim msgFullDateLongTimeAs String = _Dim msgGeneralDateShortTimeAs String = _Dim msgGeneralDateLongTimeAs String = _Dim msgMonth As String "(M) Month:Dim msgRFC1123 As String "(R) RFC1123:Dim msgSortable As String = "(s) Sortable:Dim msgUniSortlnvariantAs String = _Dim msgUniFull As String "(U) Universal full date/time:"Dim msgYear As String "(Y) Year:Public Shared Sub Main()& vbCrLfDateTimeKind.Unspecified)Dim ci As CultureInfo'Format the current date and time in various ways.Console.Clear()Console.WriteLine( "Standard DateTime Format Specifiers:" & vbCrLf)Console.WriteLine(msgThisDate, thisDate)Console.WriteLine(msg1)' Display the thread current culture, which is used to format the values.ci = Thread.CurrentThread.CurrentCultureConsole.WriteLine( "{0,-30}{1}"& vbCrLf, msgCulture, ci.DisplayName)Dim msgRoundtripLocal As String "(o) Roundtrip (local):.Dim msgRoundtripUTC As String Dim msgRoundtripUnspecified As String = Dim msg1 As String = "Use ToString(String) "(o) Roundtrip (UTC):."(o) Roundtrip and the current (Unspecified):.thread culture."specified culture."Dim msg2 As String& vbCrLf"Use ToString(String,IFormatProvider)and aDim msgCulture As String "Culture:"Dim msgThisDate As String = "This date and time: {0}" & vbCrLfDim thisDate As DateTime = DateTime.NowDim utcDate As DateTime = thisDate.ToUniversalTime()DimunspecifiedDate As DateTime = new DateTime(2000, 3, 20, 13, 2, 3, 0,Console.WriteLine(msgShortDate & "d"))Console.WriteLine(msgLongDate & "D"))Console.WriteLine(msgShortTime & "t"))Console.WriteLine(msgLongTime & "T")) thisDate.ToString( thisDate.ToString( thisDate.ToString( thisDate.ToString(Console.WriteLine(msgFullDateShortTime "f"))Console.WriteLine(msgFullDateLongTime "F"))& thisDate.ToString( "g")) & thisDate.ToString(& thisDate.ToString(Console.WriteLine(msgGeneralDateShortTimeConsole.WriteLine(msgGeneralDateLongTime & thisDate.ToString("G"))Console.WriteLine(msgMonth & thisDate.ToString( "M"))Console.WriteLine(msgRFC1123 & utcDate.ToString( "R"))Console.WriteLine(msgSortable & thisDate.ToString( "s"))Console.WriteLine(msgUniSortlnvariant & utcDate.ToString( "u"))Console.WriteLine(msgUniFull & thisDate.ToString(U"))Console.WriteLine(msgYear & thisDate.ToString( "Y"))Console.WriteLine(msgRoundtripLocal & thisDate.ToString( "o"))Console.WriteLine(msgRoundtripUTC & utcDate.ToString( "o"))Console.WriteLine(msgRoundtripUnspecified unspecifiedDate.ToString( "o"))Console.WriteLine()Display the same values using a Cultureinfo object. The Cultureinfo class 'implements IFormatProvider.Console.WriteLine(msg2)'Display the culture used to format the values.ci = New CultureInfo( "de-DE")Console.WriteLine( "{0,-30}{1}" & vbCrLf, msgCulture, ci.DisplayName)Console.WriteLine(msgShortDate & "d" , ci))Console.WriteLine(msgLongDate & "D" , ci))Console.WriteLine(msgShortTime & "t" , ci))Console.WriteLine(msgLongTime & "T" , ci)) thisDate.ToString( thisDate.ToString( thisDate.ToString( thisDate.ToString(Console.WriteLine(msgFullDateShortTime &"f" , ci))Console.WriteLine(msgFullDateLongTime &"F" , ci))& thisDate.ToString( "g" , ci)) Console.WriteLine(msgGeneralDateLongTime & "G" , ci))Console.WriteLine(msgMonth & "M" , ci))Console.WriteLine(msgRFC1123 & "R" , ci))Console.WriteLine(msgSortable & "s" , ci))Console.WriteLine(msgUniSortlnvariant &"u" , ci))thisDate.ToString(thisDate.ToString(Console.WriteLine(msgGeneralDateShortTime thisDate.ToString(thisDate.ToString(utcDate.ToString( thisDate.ToString(utcDate.ToString(Console.WriteLine(msgUniFull "U" , ci))thisDate.ToString( Console.WriteLine(msgYear & thisDate.ToString("Y" , ci))Console.WriteLine(msgRoundtripLocal & thisDate.ToString("o" ), ci)Console.WriteLine(msgRoundtripUTC & utcDate.ToString("o" ), ci)Console.WriteLine(msgRoundtripUnspecified unspecifiedDate.ToString( "o" ), ci)Console.WriteLine()End Sub 'MainEnd Class 'SampleI'This code example produces the following results:I'Standard DateTime Format Specifiers:I'This date and time: 4/17/2006 2:29:09 PMI'Use ToString(String) and the current thread culture.'Culture: English (United States)I'(d) Short date: ......... 4/17/2006'(D) Long date: .......... Monday, April 17, 2006'(t) Short time: .......... 2:29 PM'(T) Long time: .......... 2:29:09 PM '(f) Full date/short time: . . Monday, April 17, 2006 2:29 PM'(F) Full date/long time:. . . Monday, April 17, 2006 2:29:09 PM'(g) General date/short time:. 4/17/2006 2:29 PM'(G) General date/long time (default):' ................. 4/17/2006 2:29:09 PM'(M) Month: .............. April 17'(R) RFC1123: ................. M on, 17 Apr 2006 21:29:09 GMT'(s) Sortable: 2006-04-17T14:29:09 '(u) Universal sortable (invariant):' ................. 2006-04-17 21:29:09Z'(U) Universal full date/time: Monday, April 17, 2006 9:29:09 PM'(Y) Year: ............... April, 2006'(o) Roundtrip (local):. . . . 2006-04-17T14:29:09.3011250-07:00'(o) Roundtrip (UTC): ........ 2006-04-17T21:29:09.3011250Z '(o) Roundtrip (Unspecified):. 2000-03-20T13:02:03.0000000'Use ToString(String, IFormatProvider) and a specified culture.'Culture: German (Germany)'(d) Short date: ......... 17.04.2006'(D) Long date: .......... Montag, 17. April 2006'(t) Short time: ......... 14:29'(T) Long time: .......... 14:29:09 '(f) Full date/short time: . . Montag, 17. April 2006 14:29'(F) Full date/long time:. . . Montag, 17. April 2006 14:29:09'(g) General date/short time:. 17.04.2006 14:29'(G) General date/long time (default):' ................. 17.04.2006 14:29:09'(M) Month: .............. 17 April'(R) RFC1123: ................. M on, 17 Apr 2006 21:29:09 GMT'(s) Sortable: ................ 2006-04-17T14:29:09'(u) Universal sortable (invariant):' .................. 2006-04-17 21:29:09Z'(U) Universal full date/time: Montag, 17. April 2006 21:29:09'(Y) Year: .............. A pril 2006'(o) Roundtrip (local):. . . . 2006-04-17T14:29:09.3011250-07:00'(o) Roundtrip (UTC): ........ 2006-04-17T21:29:09.3011250Z'(o) Roundtrip (Unspecified):. 2000-03-20T13:02:03.0000000第二个参数为一个 DateFormat 枚举,枚举值列举如下成员名称 说明rdlc 报表的时间格式 关键字 FormatDateTime 类型 函数一一日期和时间 示例表达式 =FormatDateTime(Fields! =FormatDateTime(Fields! 备注 该函数用于返回表示日期字段名.Value, DateFormat.ShortDate) 字段名.Value, vbShortDate)/时间值的字符串表达式。
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 代码文件应该已经打开并处于待编辑状态。
VS2010RDLC根据查询产生报表
这段时间看了一下VS2010rdlc报表,供大家参考一下。
运行结果为下图form中的两个textbox是设定RIGHT LEVEL范围程序根据这两个textbox的值产生报表赶快记录下来1. 首先建立一个工程文件2. 创建完成后就将ReportViewer拉到form中如下图所示3. 再给form中建立一个textbox和botton 作为后续添加条件用4. 建立一个新的报表在ReportViewer控件右上角点击如下图所示选择“设计新报表”5. 自动弹出让你建立数据源配置向导,这里我是用DBMAKER作为数据源,配置好数据源会出现下图供选择数据表6. 选择其中一个表USER进行操作然后按照提示就好。
7. 数据源配置和资料表也配置好了就该进行重要的一步,选择报表!在ReportViewer的右上角点击“小三角” 选择刚才配置好的报表。
到这里基本就可以出报表了,可是我们的目的是加条件对数据库的内容筛选后输出报表。
就要在通过下面的步骤达到目的了选择第一个“在DataSet设计工具中编辑查询” ,然后在下图的菜单上右键选择"加入"或者"设定"(不知什么原因我的电脑在接下来容易卡退)添加查询语句如下图所示SQL语句中的?和不同的数据库有关系我采用DBMAKER 而SQLServer用”@控件“ ,然后按照提示完成即可修改好入下图所示然后函数里有参数了。
最后一步修改代码private void button1_Click(object sender, EventArgs e){if (string.IsNullOrEmpty(p1.Text.Trim()) &&string.IsNullOrEmpty(p2.Text.Trim())){ERTableAdapter.Fill(ER);//这是不含参数的方法this.reportViewer1.RefreshReport();}else if(!string.IsNullOrEmpty(p1.Text.Trim()) &&string.IsNullOrEmpty(p2.Text.Trim())){// TODO: 這行程式碼會將資料載入'ER' 資料表。
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的数据集即可。
RDLC报表(同时支持WebForm和WinForm,有图有源码)-Vincent.Q-博客园
RDLC报表(同时⽀持WebForm和WinForm,有图有源码)-Vincent.Q-博客园RDLC报表(同时⽀持WebForm和WinForm,有图有源码)五⼀放假,研究了下RDLC,之前⼀直有⼈说如何强⼤?研究之后才发现,确实很强⼤.微软的这套东西,感觉是借鉴了Sybase的数据窗⼝,配置⽅式⼤同⼩异咯.我们现在看看这套东西如何使⽤?有句话叫:别看⼴告看疗效,这⾥我在举两个简单的例⼦,如图-1和图-2所⽰.⽰例⼀:点击功能系统名称链接字段,会跳转到图-2所⽰的功能系统下所包含的功能模块列表.图-1图-2我们看看是如何制作出来的?这⾥我使⽤的是VS05版本,VS08当然也可以的.新建报表⽂件,如图-3所⽰图-3创建之后,如图-4所⽰,之后,报表需要⼀个数据源.在左侧可以新建数据源的,这⾥有必要说明⼀下,数据源⽀持3种类型,除了⾮常常⽤Db表之外,还包括 WebService和对象另外两种,WebService不必过多解释,对象是指某个Class类,对,没错.就是某个Class.图-4如图-5所⽰,是我根据对象创建好的报表⽂件图-5说明1. 这是如图-2所⽰的设计⽂件,它需要根据ModuID字段过滤,也就是说,我点击moduname2进⼊,只过滤出moduid2的功能模块列表;点击moduname3进⼊,只过滤出moduid3的功能模块列表.2. 这需要设置过滤参数,我原以为会有代码实现.结果只是配置下就可以了.配置⽅式如图-6所⽰图-63. 选择”报表”,在右侧下⾯⾥可以找到.然后设置ReportParameters属性,设置弹出的页⾯增加参数即可4. 看图-6的截图,包括两个部分,第⼀部分是标题,是⼀个textbox,第⼆部分其实是⼀个table,与⽔晶报表相⽐,它是⼀个整体.我们也需要对它进⾏设置过滤参数.这个过滤,我找了半天才找到的图-75. 设置好之后,这个⼦表的设计⼯作就结束了.我们再看看图-1所⽰的报表⽂件如何改动?既然要点击moduname栏⽬值就要跳转,⾃然要设置它的导航功能.如图-8图-86. 选中这列,属性中,切换到”导航”tab页⾯,超链接操作⾥,跳⾄报表选择刚才那个功能模块⽂件就可以了.之后,还要设置传⼊参数就可以了7. 我们看看代码是如何实现的,如图-9和图-10所⽰图-9图-10⽰例⼆:图表展⽰,看下最终效果图,如图-11所⽰图-11OK,我们还是看看如何制作出来的,数据源的创建和加载和前⾯⼀样,不再描述.1. 先看图表的数据源是什么?即⽉份,计划投资额,实际投资额,如图-12所⽰图-122. 再设置下图表的属性就可以了,如图-13所⽰图-133. 图表设置a) 常规页⾯中,可以设置图表的标题b) 数据页⾯中,”数据集名称”就是图表的数据源名称c) 数据页⾯中,”值”就是Y轴的数据,这⾥两个两个,如图-14所⽰d) 数据页⾯中,”类别组”就是X轴的数据,注意这⾥的标签配置项,如图-15所⽰图-14图-15上⾯的⽰例,在我提供的⽂件⾥都有下载,⽽且还有⼀个系列教程,也不错.这⾥还有两篇推荐博⽂⽰例代码,⾥⾯还包括⼀个教程,推荐⼤家参考RDLC报表.Files分类: 经验技巧标签: RLDC。
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的数据集即可。
打印机设置(PrintDialog)、页面设置(PageSetupDialog)及RDLC。。。
打印机设置(PrintDialog)、页⾯设置(PageSetupDialog)及RDLC。
如果⼀台电脑同时连接多个打印机,⽽且每个打印机使⽤的纸张⼤⼩各不相同(⽐如:票据打印钱⽤的⼩票专⽤张,办公打印机⽤的是A4标准纸),在处理打印类的需求时,如果不⽤代码⼲预,⽤户必须每次打印时,都必须在弹出窗⼝⾥,⼿动选择打印机(还有可能需要设置纸张类型),这样⽤起来会⽐较烦。
幸好,.Net提供了“⼆”个很有⽤的类:PrintDialog(打印机设置对话框)、PageSetupDialog(页⾯设置对话框) (注:之所以给“⼆”加引号,是因为"打印机设置"其实已经完全包含了“页⾯设置”的所有功能,⽽且“ PageSetupDialog”类在实际使⽤中发现还有⼀个容易误导的地⽅)⼀、打印机设置(PrintDialog)⽰例代码:using System;using System.Drawing.Printing;using System.Windows.Forms;namespace PrintDemo{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void btnPrintSet_Click(object sender, EventArgs e){PrintDialog dlg = new PrintDialog();if (dlg.ShowDialog() == DialogResult.OK) {ShowInfo(dlg.PrinterSettings);}}private void ShowInfo(PrinterSettings printSettings) {var pageSettings = printSettings.DefaultPageSettings;var pageSize = pageSettings.PaperSize;label1.Text = string.Format("打印机:{1}{0}纸张类型:{2}{0}纸张⼤⼩:{3}cm * {4}cm{0}纸张布局:{5}",Environment.NewLine + Environment.NewLine,printSettings.PrinterName,pageSize.PaperName,InchToCm(pageSize.Width / 100.0M).ToString("F2"),InchToCm(pageSize.Height / 100.0M).ToString("F2"),ndscape ? "横向" : "纵向");}const decimal K = 2.54M;private decimal InchToCm(decimal inch){return inch * K;}private decimal CmToInch(decimal cm){return cm / K;}}}"打印机设置"对话框的截图如下:"打印机设置"对话框调⽤完成后,可以取回⼀些有⽤的信息,下⾯是⼀些关键信息的展⽰截图:可以看到,打印机设置界⾯⾥,已经包含了关于纸张尺⼨、纸张布局(纵向、横向)的设置,所以在我看来,系统没有必要再单独提供"页⾯设置(PageSetupDialog)"⼆、页⾯设置(PageSetupDialog)⽰例代码:(在刚才的代码基础上加点东西)using System;using System.Drawing.Printing;using System.Windows.Forms;namespace PrintDemo{public partial class Form1 : Form{public Form1(){InitializeComponent();}/// <summary>/// 打印机设置/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void btnPrintSet_Click(object sender, EventArgs e){PrintDialog dlg = new PrintDialog();if (dlg.ShowDialog() == DialogResult.OK) {ShowInfo(dlg.PrinterSettings);}}/// <summary>/// 页⾯设置/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void btnPageSet_Click(object sender, EventArgs e){PageSetupDialog dlg = new PageSetupDialog();dlg.PageSettings = new PageSettings();if (dlg.ShowDialog() == DialogResult.OK){ShowInfo(dlg.PageSettings);}}private void ShowInfo(PrinterSettings printSettings) {var pageSettings = printSettings.DefaultPageSettings;var pageSize = pageSettings.PaperSize;label1.Text = string.Format("打印机:{1}{0}纸张类型:{2}{0}纸张⼤⼩:{3}cm * {4}cm{0}纸张布局:{5}",Environment.NewLine + Environment.NewLine,printSettings.PrinterName,pageSize.PaperName,HundredthsInchToCM(pageSize.Width).ToString("F1"),HundredthsInchToCM(pageSize.Height).ToString("F1"),ndscape ? "横向" : "纵向");}private void ShowInfo(PageSettings pageSettings){var pageSize = pageSettings.PaperSize;label1.Text = string.Format("纸张类型:{1}{0}纸张⼤⼩:{2}cm * {3}cm{0}纸张布局:{4}{0}页边距:{5}",Environment.NewLine + Environment.NewLine,pageSize.PaperName,HundredthsInchToCM(pageSize.Width).ToString("F1"),HundredthsInchToCM(pageSize.Height).ToString("F1"),ndscape ? "横向" : "纵向",MarginToString(pageSettings.Margins));}private string MarginToString(Margins margins) {return string.Format("左:{0}mm,上:{1}mm,右:{2}mm,下:{3}mm", HundredthsInchToMM(margins.Left), HundredthsInchToMM(margins.Top), HundredthsInchToMM(margins.Right), HundredthsInchToMM(margins.Bottom)); }const decimal K = 2.54M;/// <summary>/// (百分之⼀)英⼨制,转毫⽶/// </summary>/// <returns></returns>private int HundredthsInchToMM(decimal d) {return (int)Math.Round((d / 100.00M) * K * 10);}/// <summary>/// (百分之⼀)英⼨制,转厘⽶/// </summary>private decimal HundredthsInchToCM(decimal d){return (d / 100.00M) * K;}}}这⾥有⼀个坑爹的地⽅,不管你如何选择Pager Size,最后返回的PageSettings⾥,PageSize 始终是A4纸的⼤⼩(如下图),这也是我强烈推荐⼤家尽量避免使⽤PageSettings的理由还有⼀个问题,如何在弹出这⼆个对话框时,默认就选中⼀些特定的值呢?这个容易,参见下⾯的代码:/// <summary>/// 打印机设置/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void btnPrintSet_Click(object sender, EventArgs e){PrintDialog dlg = new PrintDialog();dlg.PrinterSettings = new PrinterSettings(){PrinterName = "pdfFactory Pro"};if (dlg.ShowDialog() == DialogResult.OK) {ShowInfo(dlg.PrinterSettings);}}这样,在弹出打印机设置界⾯时,就默认选中了"pdfFactory Pro"打印机(当然,这个名字必须确实是你本机安装的打印机之⼀,如果这个打印机名字不存在,系统仍将选中默认打印机)/// <summary>/// 页⾯设置/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void btnPageSet_Click(object sender, EventArgs e){PageSetupDialog dlg = new PageSetupDialog();dlg.PageSettings = new PageSettings(){PaperSize = new PaperSize(){PaperName = "A5",//其实这⾥不管设置什么名称,都没啥⽤//⼀旦设置初始尺⼨⼤⼩后,在页⾯设置对话框⾥,不管选什么纸张Size,//对话框关闭时,返回值的PageSize⾥,始终就是这个⼤⼩,不会随⽤户选择⽽改变Height = 827,Width = 583},Landscape = false,Margins = new Margins() { Left = 10, Top = 20, Bottom = 30, Right = 40 }};if (dlg.ShowDialog() == DialogResult.OK){ShowInfo(dlg.PageSettings);}}这样,页⾯设置对话框弹出时,就默认选中了布局⽅向为“纵向”,同时设置了边距,⽽且纸张⼤⼩为A5的⼤⼩(注意:PageSize的设置,在界⾯上看不出效果,但是关闭对话框后,返回值的PageSize⾥会起作⽤)三、RDLC报表⽤代码指定打印机、纸张⼤⼩、打印份数rdlc报表的预览控制ReportViewer⾥,已经对外暴露了PrinterSettings属性//// Summary:// Gets or sets a System.Drawing.Printing.PrinterSettings object that contains// the settings for the default printer and print options that are used to initialize// the Print dialog and the printer's Preferences dialog.//// Returns:// A System.Drawing.Printing.PrinterSettings object.[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)][Browsable(false)]public PrinterSettings PrinterSettings { get; set; }以及PageSettings的set/get⽅法//// Summary:// Returns the page settings that are used to print the current report in the// ReportViewer control or display it in print layout mode.//// Returns:// A System.Drawing.Printing.PageSettings object that contains the page settings// that are used to print the current report in the ReportViewer control or// display it in print layout mode, or null if the ReportViewer control has// not yet processed a report.public PageSettings GetPageSettings();//// Summary:// Sets the page settings that are used to print the current report in the ReportViewer// control or display it in print layout mode.//// Parameters:// pageSettings:// A System.Drawing.Printing.PageSettings object that contains the new page// settings.This parameter must not be null.public void SetPageSettings(PageSettings pageSettings);利⽤这些信息,就⾜够控制RDLC的打印机和纸张⼤⼩了,⽐如要指定某台打印机打印,可以这么做:this.reportViewer1.PrinterSettings = new PrinterSettings(){PrinterName = "pdfFactory Pro"};要指定RDLC打印时,采⽤特定的纸张⼤⼩,可以参考下⾯的代码:var pageSettings = this.reportViewer1.GetPageSettings();pageSettings.PaperSize = new PaperSize(){Height = 100,Width = 50};ndscape = true;this.reportViewer1.SetPageSettings(pageSettings);打印份数的控制很简单:PrinterSettings类有⼀个Copies属性,直接给它赋值⼀个short型数字就⾏了最后再回到本⽂最开头提出的问题,知道如何⽤代码影响打印机、纸张⼤⼩后,最后可以将PageSettings以及PrinterSettings中的关键信息,持久化存储起来(⽐如:⽤xml或DB),下次再进⼊该业务界⾯时,根据存储的配置信息还原相关的设置,这样⽤户只要设置⼀次,以后就不⽤每次⼿动切换打印机或纸张类型了。
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中。
基于RDLC的报表系统的设计和实现_孙鹏(1)
Computer Knowledge and Technology 电脑知识与技术本栏目责任编辑:谢媛媛软件设计开发第8卷第19期(2012年7月)基于RDLC 的报表系统的设计和实现孙鹏,徐美红,谢国雄,李泽杰(广东省气象信息中心,广东广州510080)摘要:该文介绍了目前市场上的主流报表工具,在进行了综合分析的基础上,提出了基于RDLC 技术的报表系统的设计和实现,该平台运行于微软.NET 平台,支持C#, 开发语言,它的优点是免费、能制作各种样式复杂的报表、同时支持BS 和CS 模式、实现简单、易于部署等。
关键词:报表;RDLC ;.NET ;导出;Excel中图分类号:TP315文献标识码:A 文章编号:1009-3044(2012)19-4624-03Design and Implementation of Reporting System Based on RDLCSUN Peng,XU Mei-hong,XIE Guo-xiong,LI Ze-jie(Guangdong Provincial Meteorological Information Center,Guangzhou 510080,China)Abstract:This paper introduces the current market mainstream reporting tools,on the basis of comprehensive analysis,proposed design and implementation of reporting system based on RDLC.the platform running on the Microsoft .NET platform,support C#, de ⁃velopment language,it has the advantages of free,can make a variety of styles complex statements,support BS and CS mode at the same time,the realization of a simple,easy to deploy.Key words:Report;RDLC;.NET;Export;Excel目前市面上主要的报表软件、工具和插件不少,最主流的有水晶报表(Crystal Report ),其应用非常广泛,在不同行业、规模的应用里都可以看到它的身影。
RDLC报表的纵向横向设置
RDLC报表的纵向横向设置
RDLC报表的纵向横向设置
⽤ReportViewer 加载RDLC报表,若报表内容宽度超出⽤张A4纸的纵向宽度,那么报表靠右部分打印出来会被分割到下⽤页如果⽤户每次打印都需设置纵向横向,这样⽤户会感到⽤烦。
如何设置RDLC报表的纵向横向呢?
⽤先打开RDLC报表设计器页⽤。
在灰⽤部分点右键 -> 报表属性。
报表的默认设置都可以在此界⽤修改。
当选择纵向时,报表宽度21cm,⽤度29.7cm。
当选择横向时,宽度29.7cm,⽤度21cm 查看报表的XML代码,可发现页⽤设置部分在Page节点下。
<Page>
<PageHeight>21cm</PageHeight>
<PageWidth>29.7cm</PageWidth>
<LeftMargin>2cm</LeftMargin>
<RightMargin>2cm</RightMargin>
<TopMargin>2cm</TopMargin>
<BottomMargin>2cm</BottomMargin>
<ColumnSpacing>0.13cm</ColumnSpacing>
<Style />
</Page>
在C# 程序中,需判断报表的内容宽度是否超出默认的21cm,若超出则只需修改<PageHeight> 和<PageWidth>的属性值即可。
RDLRDLC批量单据打印-电脑资料
RDLRDLC批量单据打印-电脑资料使用RDL或RDLC进行单据打印时,单张单据打印比较直观简单,无需说明,。
下面我们来谈一下批量单据打印的实现方法。
以下以RDL的ReportBuilder设计环境为例进行讲解,RDLC、VS设计环境同理。
实现效果如下。
一、基本思路数据集:将单据表头、表体合并为一个数据集。
例如将以下两个表合并为一个DataSet查询:单据号码、客户代码、部门、货品代码、货品名称、仓库、数量、单价、金额等。
表头字段:单据号码、客户代码、部门等;表体字段:项次、货品代码、货品名称、仓库、数量、单价、金额等字段;控件:列表、矩形、文本框、表。
使用“列表”控件作为单据的边界,并在列表中设置一个“单号”分组,实现分页,在“列表”中设计单据表头及明细表体。
二、详细步骤1. 建立列表在主体中插入一个列表,并指定其数据源。
选择列表,在行组中用鼠标右键选择详细信息,添加以“单据号码”分组。
删除“详细信息”组及自动新增的“单据号码”列。
此时得到了一个单据容器,用以容纳我们即将要设计的单据。
2. 列表与矩形细心一点你会发现,在我们刚才插入的“列表”控件中,还有嵌套了一个“矩形”控件,这是布局所需要的。
如果没有矩形的话,我们拖进列表中的字段,将会成为列表本身的值。
所以不管是列表、表或矩阵,如果想在T ablix表格之中再进行布局,则先铺一个矩形是非常必要的。
因为有矩形的存在,所以我们可以像普通报表一样,在列表中布置表头文本框,和表体详细数据。
不再赘述。
3. 页眉页脚将每页都有重复显示的东西放在页眉和页脚。
当然还有表格的表头也要设置为在每页中重复。
方法是先选中“表”,进入高级模式,在行组中选择作为表头的“静态”行,在属性中将RepeatOnNewPage设置为True。
如果有些信息需要在每页中都要显示,但因为针式打印中存在换页切纸问题,所以把一些重要信息设置在表中,也可以通过设置RepeatOnNewPage属性,在每页中显示。