使用Developer Express报表控件:
新建一个报表的时候,在添加新项中选择XtraReport V3 Class选项,名称自己命名,
点确定就会跳出它的设计界面。
它会有三个区域:PageHeader[one band per page],Detail,PageFooter[one band per page]这三个区域。
首先要添加一个ReportHeader[one band per report],可以在它的空白区域,右击鼠标-->Insert Band-->
ReportHeader即可。不需要PageHeader[one band per page]的话,可以把它删掉。
两者的区别主要是PageHeader[one band per page]打印出来的每个页都会显示PageHeader[one band per page]
所设计的内容。而ReportHeader[one band per report]打印出来的只有在首页才会显示。其它的页就不会了。
接着就是主要界面设计的问题,可以在它的空白区域,右击鼠标-->Insert Detail Report-->Unbound即可。
它就会跳出一个DetailReport,它下面还有一个Detail1,主要是用来显示主要内容用的。接着再添加一个用来
显示一个主要内容的列标头,就相当于标志以便更容易查看。可以右击鼠标-->Insert Band-->GroupHeader即可。
就会有一个GroupHeader1显示出来,它是在Detail1上面的,或者还要显示一些主要内容显示完之后的一些数据,
又要右击鼠标-->Insert Band-->GroupFooter即可。
如果又要让它同时显示另外一个,可以选中Detail,然后右击鼠标-->Insert Detail Report-->Unbound它就会
跳出另外一个DetailReport1,它下面还有一个Detail2,添加其它的同上。

要让以下的有数据的话,就要事先对它的数据进行绑定
            DetailReport.DataAdapter = Adp         \'数据适配器  
            DetailReport.DataSource = dst          \'数据集
            DetailReport.DataMember = "a"          \'表 

如果想让所查找出来的数据,让它有顺序排列的话,就要使用它里面的事件了!
如Cell7单元格是在表格里面,但其它表格的单元格绑定在所查找的数据中,数据有5条的话,Cell单元格它就不会自己显示1,2,3,4,5这样排序了

。就要使用它本身单元格的事件。
Private Sub Cell7_BeforePrint(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintEventArgs) Handles

Cell7.BeforePrint
        Dim lab As XRLabel = sender
        lab.Text = s  \'s这个变量要定义一个全局变量,初始值设为1
        s += 1
    End Sub

还有一种情况,可能要对表格每一行数据中的某列进行求和或求个数。
        \'求个数
        Dim XrSummary2 As DevExpress.XtraReports.UI.XRSummary = New DevExpress.XtraReports.UI.XRSummary
        Cell32.DataBindings.Add("Text", dst, "a.id")
        XrSummary2.FormatString = "{0}"
        XrSummary2.Func = SummaryFunc.Count
        XrSummary2.Running = DevExpress.XtraReports.UI.SummaryRunning.Group
        Me.Cell32.Summary = XrSummary2  \'就可以显示所要的个数

        \'求和
        Dim XrSummary1 As DevExpress.XtraReports.UI.XRSummary = New DevExpress.XtraReports.UI.XRSummary
        Me.Cell33.DataBindings.AddRange(New DevExpress.XtraReports.UI.XRBinding() {New DevExpress.XtraReports.UI.XRBinding("Text", dst, "a.startmoney", "{0}")})
        XrSummary1.FormatString = "{0}"
        XrSummary1.Func = SummaryFunc.Sum
        XrSummary1.Running = DevExpress.XtraReports.UI.SummaryRunning.Group
        Me.Cell33.Summary = XrSummary1
       

        \'单元格的绑定
         XrTableCell30.DataBindings.Add("Text", dst, "Vouchers.Name")
         Cell17.DataBindings.AddRange(New DevExpress.XtraReports.UI.XRBinding() {New DevExpress.XtraReports.UI.XRBinding("Text", dst1, "a.Depositdate", "{0:yyyy/MM/dd}")})       \'日期格式的绑定

    
        \'如果要把两个表格中某一列的值相符累加起来
        \'定义两个变量interest1,interest2为Double型
        \'第一个表格的某个列
    Private Sub Cell25_BeforePrint(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintEventArgs) Handles Cell25.BeforePrint
        Dim lab As XRLabel = sender
        Dim value As Double
        value = Convert.ToDouble(lab.Text)
        interest1 += value                \'就会求出这一列中所有数据的总和
    End Sub

        \'第二个表格的某个列
    Private Sub Cell23_BeforePrint(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintEventArgs) Handles Cell23.BeforePrint
        Dim lab As XRLabel = sender
        Dim value As Double
        value = Convert.ToDouble(lab.Text)
        interest2 += value              
    End Sub
 
        \'这样就会把这两列的值添加到单元格Cell19中  
    Private Sub Cell19_BeforePrint(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintEventArgs) Handles Cell19.BeforePrint
        Me.Cell19.Text = interest1 + interest2
    End Sub

 

 

 

Web中打印预览

         Web程序中使用起来可能有点麻烦,但相对来说还是比较容易的。

         1 在页面中分别添加ReportToolbarReportViewer。如图:            

     

ReportToolbar提供一组工具命令,用来控件ReportViewer视图执行哪些操作,ReportToolbar最重要的属性就是ReportViewer属性,给其指定一个报表视图。如下图:

ReportViewer用来展现那Report报表,可以通过ReportViewerReport属性指定(通过列表选择即可),如下图:

         设置完成后,通过浏览器打开页面并预览报表。