FastReport的再次使用


FastReport.Net是一款功能齊全的報表分析解決方案。

前兩年工作的時候就是使用FastReport進行報表設計,只是當時使用的時候都是調用別人寫好的幫助類,直接調用即可。當時讓人覺得不明覺厲。呵呵..不過現在再次需要使用到FastReport進行報表的設計打印,以及與rdlc報表進行對比的。所以再次僅記一次初步的使用。

一、報表的的設計過程

設計模板----加載數據---調用模板生成報表或者打印。基本上大多數的報表都是如是設計的。模板與數據分離,在調用時再將數據綁定到模板上。

二、FastReport的初步使用

使用FastReport設計器承載模板設計和預覽

  /// <summary>
       /// 用fastreport設計器承載模板
       /// </summary>
       /// <param name="sender"></param>
       /// <param name="e"></param>
        private void Scan(object sender, EventArgs e)
        {
            DataSet ds = GetDataSource();
           
            report.Clear();  ///清空報表,不然在窗體第二調用時會帶不出報表信息
            if (!File.Exists(frxFile))
            {
                MessageBox.Show("找不到模板:OrderPrint.frx,請先設計模板");
                report.RegisterData(ds);                                        //注冊數據
                report.SetParameterValue("TType", "類型");                      //傳遞參數
                for(int i=0;i<ds.Tables.Count;i++)
                {
                    report.GetDataSource(ds.Tables[i].TableName).Enabled = true;    //手動設為true,不然在設計器中看不到數據對象
                }
                report.Design();           //設計
                return;
            }
            
            report.Load(frxFile);
            report.SetParameterValue("TType", "類型");
            report.RegisterData(ds);
            report.Prepare();
            report.ShowPrepared();                  //預覽顯示
        }    

 

當然有時設計FastReport模板不是簡單的設計顯示,還需要對其后端進行處理

例如數據區的table顯示,則需要報表模板后端進行處理:

 private void Table3_ManualBuild(object sender, EventArgs e)
    {
      DataSourceBase data1 = Report.GetDataSource("Detail"); // 獲取DataSet中表名為Detail的數據源

      data1.Init(); // 初始化          
      Table3.PrintRow(0); // 控件Table1打印第0行

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

     

      while(data1.HasMoreRows) // 打印重復循環的行

      {

        Table3.PrintRow(0);

        Table3.PrintColumns();

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

      }

    }   

  

 

 

使用FastReport提供的控件進行操作:

在【工具箱】---【添加選項卡】---【選擇項】--【選擇FastReport.dll】。將FastReport控件顯示到工具箱中,如下圖所示:

可以通過FastReport提供的控件進行報表的操作。

例如使用PreviewControl進行報表的展示與打印:

 private void Print(object sender, EventArgs e)
        {
            DataSet ds = GetDataSource();
            string tType = "類型";
            report.Clear();  ///
            report.Preview = this.PreviewDetail;
            if (!File.Exists(frxFile))
            {
                MessageBox.Show("找不到模板:OrderPrint.frx,請先設計模板");
                report.RegisterData(ds);
                report.SetParameterValue("OrderType", orderType);
                for (int i = 0; i < ds.Tables.Count; i++)
                {
                    report.GetDataSource(ds.Tables[i].TableName).Enabled = true;
                }
                report.Design();
                return;
            }

            report.Load(frxFile);
            report.SetParameterValue("OrderType", orderType);
            report.RegisterData(ds);
            report.Prepare();
            report.ShowPrepared();
            PreviewDetail.Print();    //打印
        }

顯示效果就像rdlc的ReportViewer承載顯示rdlc報表一樣(就不上圖了)。

 

最后

雖然現在只是非常淺簡的使用,個人覺得FastReport.net在設計方面還是由於rdlc的,模板設計相對簡單,在程序調用方面也比較優秀。但是FastReport.net是收費的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM