使用功能強大的外掛程式FastReport.Net列印報表執行個體

來源:互聯網
上載者:User

標籤:des   winform   style   blog   http   io   os   ar   使用   

  我第一次使用FastReport外掛程式做的功能是列印一個十分複雜的excel表格,有幾百個欄位都需要綁定資料,至少需要4個資料來源,而且用到橫向、豎向合併儲存格。

 

  我不是直接連接資料庫,而是使用RegisterData的方式自己註冊DataSet對象,所有的表Table都是代碼產生,填充到DataSet中,然後註冊到控制項中。

 

  最開始嘗試使用這個外掛程式做一個簡單的功能使用的就是下面的例子,不過花了一整天,還請假了4個人都沒有搞出來,晚上拿著別人的模板直接修改,然後測試,就通過了。

 

  之前測試,一直都提示未串連到資料來源,原因是我直接使用記事本來向模板添加資料來源導致的,平時別人使用的資料來源都是自己寫代碼,調用Design的方式得到的,而且只能是winform程式,webform程式不行,因為要啟動com組件。

 

  下面是我總結的特別簡單的一個方式,使用RegisterData的方式自己註冊DataSet對象。

 

 

 

1,          選擇【File】-》【New】 建立FastReport模板,選擇的1。

                       

2,          選擇【View】-》【Data】,顯示如下,匯出Dictionary,儲存。

 

 

 

3,          編輯匯出的.frd檔案,編輯完後儲存,再匯入。

如下:

(1)  TableDataSource 是資料來源節點。

(2)  Name是DataSet對象的Table的表名。

(3)  Column是Table的列,模板綁定資料時,使用Column的Name屬性。

 

<?xml version="1.0" encoding="utf-8"?>

<Dictionary>

  <TableDataSource Name="Table1" ReferenceName="Data.Table1" DataType="System.Int32" Enabled="true">

    <Column Name="姓名" DataType="System.String" PropName="Column"/>

    <Column Name="密碼" DataType="System.String" PropName="Column"/>

  </TableDataSource>

</Dictionary>

 

4,          編輯模板,添加一個Table控制項。

第一行直接雙擊輸入文本;第二行直接將右邊的資料來源托到儲存格中;

設定邊框、字型。

 

 

 

5,          添加事件後台方法

如,選中Table1,在事件ManualBuild的後面雙擊,添加下面的代碼:

 

    // 控制項Table1的構建事件

    private void Table1_ManualBuild(object sender, EventArgs e)

    {

        DataSourceBase data1 = Report.GetDataSource("Table1"); // 擷取DataSet中表名為Table1的資料來源

        data1.Init(); // 初始化

       

        Table1.PrintRow(0); // 控制項Table1列印第0行

        Table1.PrintColumns(); // 每列印一行,都要調用 PrintColumn或PrintColumns

     

        while(data1.HasMoreRows) // 列印重複迴圈的行

        {

            Table1.PrintRow(1);

            Table1.PrintColumns();

            data1.Next(); // 讀取下一行

        }

    }

 

說明:

(1)   Table控制項是從第0行開始的。

(2)   綁定資料的重複行,算作一行。

(3)   輸出行之前,要先調用Init() 方法,當有兩個資料來源,比如data1和data2,data1又是data2的父資料來源,需要把data1當做參數,如 data2.Init(data1);

(4)   每列印一行,都要調用 PrintColumn或PrintColumns

 

 

6,          添加c#代碼

建立一個測試頁面test.aspx,將一個FastReport控制項拖放到頁面上(只有按照過FastReport.net,且引用了FastReport.dll,FastReport.Bars.dll,FastReport.Web.dll之後才可以)

 

添加後頁面如下:

 

<body>

    <form id="form1" runat="server">   

    <cc1:WebReport ID="webReport" runat="server" OnStartReport="WebReport_StartReport" />

    </form>   

</body>

 

後台方法:

        protected void WebReport_StartReport(object sender, EventArgs e)

        {

 

            DataSet ds = new DataSet();

 

            DataTable table1 = new DataTable();

            table1.TableName = "Table1"; // 一定要設定表名稱

            ds.Tables.Add(table1);

            // 添加表中的列

            table1.Columns.Add("姓名", typeof(string));

            table1.Columns.Add("密碼", typeof(string));

            // 任意添加一些資料

            for (int i = 0, maxI = 10; i < maxI; i++)

            {

                DataRow row = table1.NewRow();

                row["姓名"] = "我是" + i.ToString();

                row["密碼"] = i.ToString();

                table1.Rows.Add(row);

            }

           

            Report FReport = (sender as WebReport).Report;       

            string sPath = GetReportsPath("test.frx") ;

            FReport.Load(sPath);

            // 將DataSet對象註冊到FastReport控制項中

            FReport.RegisterData(ds);

 

        }

 

        /// <summary>

        /// 擷取fastreport模板的路徑

        /// </summary>

        /// <param name="sReportName">模板名稱</param>

        /// <returns>返回模板路徑</returns>

        public string GetReportsPath(string sReportName)

        {

            return FastReport.Utils.Config.ApplicationFolder + "Reports\\" + sReportName;

        }

 

7,          測試效果

1對應儲存,可以是各種格式;

2對應列印;

3對應分頁。

 

 

 

http://jingyan.baidu.com/article/046a7b3ec2c744f9c37fa944.html

使用功能強大的外掛程式FastReport.Net列印報表執行個體

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.