.Net報表開發控件XtraReport介紹

一、概述

在XtraReport中,每一個報表都是XtraReport或者其子類。

XtraReport中的報表類可以與數據綁定也可以不綁定。

在創建一個報表時,可以從已有的報表中加載樣式和佈局,樣式中包含瞭報表控件外觀的屬性值,而佈局包含瞭報表的結構信息。另外,還可以從其他報表系統中導入報表,比如:Access,水晶報表等等。

報表類(XtraReport的子類)創建後,就可以生成其實例。需要註意的是,XtraReport對象可以在Windows Forms中使用也可以在Asp.net中使用。在Windows應用中使用報表,通常需要維護報表的,這個對象提供瞭報表的輸出功能。

創建報表有兩種方式,一種是簡單地添加一個"模板"報表,一種是通過報表向導來創建報表。

在報表添加到項目後,報表設計器提供瞭大量的設計時元素來加快簡化報表的創建。XtraReport工具箱包含瞭所有的控件。

Report Navigator可以瀏覽整個報表,Feild List可以拖放數據字段來創建與數據綁定的報表控件。

XtraReport的所有報表都是由和組成的。

public class XtraReport1 : DevExpress.XtraReports.UI.XtraReport
{
    private DevExpress.XtraReports.UI.DetailBand Detail;
    private DevExpress.XtraReports.UI.PageHeaderBand PageHeader;
    private DevExpress.XtraReports.UI.PageFooterBand PageFooter;
    private DevExpress.XtraReports.UI.XRLabel xrLabel1;
    private DevExpress.XtraReports.UI.XRLabel xrLabel2;

    private System.ComponentModel.Container components = null;

    public XtraReport1()
    {
        InitializeComponent();
    }

    protected override void Dispose(bool disposing)
    {
        if (disposing)
        {
            if (components != null)
            {
                components.Dispose();
            }
        }
        base.Dispose(disposing);
    }
}

然後開始創建報表的結構,首先在XtraReportBase.Bands屬性中添加Bands,然後在相應的Bands的XRControl.Controls屬性中添加控件。報表帶和控件的添加方法一般是這樣的。

// Add Detail, PageHeader and PageFooter bands to the report's collection of bands.
this.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] { this.Detail, this.PageHeader, this.PageFooter });

// Add two XRLabel controls to the Detail band.
this.Detail.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] { this.xrLabel1, this.xrLabel2 });

可以給報表傳遞參數:

XtraReport1 report = new XtraReport1();  
report.Parameters["yourParameter1"].Value = firstValue;  
report.Parameters["yourParameter2"].Value = secondValue;

報表內使用參數:

report.FilterString = "[CategoryID] = [Parameters.yourParameter1]";

最後創建好的報表可以輸出給用戶看瞭

// Create a report.
XtraReport1 report = new XtraReport1();

// Create the report's document so it can then be previewed, printed or exported.
// NOTE: Usually you don't need to call this method as it's automatically called by all of the following methods.
// See the corresponding member topic to find out when it needs to be called.
report.CreateDocument();

// Show the form with the report's print preview.
report.ShowPreview();

// Print the report in a dialog and "silent" mode.
report.PrintDialog();
report.Print();

// Open the report in the End-User designer
report.RunDesigner();

// Export the report.
report.CreateHtmlDocument("report.html");
report.CreatePdfDocument("report.pdf");
report.CreateImage("report.jpg", System.Drawing.Imaging.ImageFormat.Gif);

二、實例展示

1、報表設計

在報表屬性中,設置默認font為微軟雅黑,設置Language為默認(註意:不能設置為中文,否則導出PDF中文亂碼)。

2、報表後臺代碼

綁定到List類型的綁定方法,設置報表上的對象的XRBinging中DataSource參數為null。

從報表的DataMember 需要設置,否則從報表隻顯示一條記錄。

同時“計算”字段的表達式的使用。

public partial class MyReport : DevExpress.XtraReports.UI.XtraReport
{
    public MyReport()
    {
        InitializeComponent();

        this.xrLabel6.DataBindings.Add("Text", null, "FileNo");
        this.xrLabel7.DataBindings.Add("Text", null, "ApplyTime", "{0:yyyy-MM-dd}");

        CalculatedField calculatedField1 = new CalculatedField
        {
            Expression = "Iif([InspectItms.InspectResult]==1,'合格','不合格' )",
            Name = "calculatedField1"
        };
        CalculatedField calculatedField2 = new CalculatedField
        {
            Expression = "[ReviewResult]=='1'",
            Name = "calculatedField2"
        };

        this.CalculatedFields.AddRange(new DevExpress.XtraReports.UI.CalculatedField[] { calculatedField1, calculatedField2});
        
        DetailReport.DataMember = "InspectItms";
        this.xrTableCell5.DataBindings.Add("Text", null, "InspectItms.InspectItem");
        this.xrTableCell6.DataBindings.Add("Text", null, "calculatedField1");
        this.xrCheckBox1.DataBindings.Add("Checked", null, "calculatedField2");

    }
}

3、調用報表

List list = new List<MyEntity> { entity };
MyReport myReport = new MyReport(); //報表實例
myReport.DataSource = list;//綁定報表的數據源
myReport.ShowPreview();

到此這篇關於.Net報表開發控件XtraReport的文章就介紹到這瞭。希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。

推薦閱讀: