何時是使用代碼報表的最佳方法,何時采用frx格式
您可能知道,不僅可以在特殊的設計器中創建FastReport.Net中的報表,還可以從用戶應用程序的代碼中創建報表。同時,您將獲得一類報表,而不是帶有frx擴展名的常規文件。可以將其轉換為庫,并在不同的項目中使用。創建此類報表的方式是什么?
看一下這段代碼:
//Create instance of class Report Report report = new Report(); //load data DataSet ds = new DataSet(); ds.ReadXml(AppFolder + "\\nwind.xml"); //Register data source report.RegisterData(ds); //Enable data table report.GetDataSource("Products").Enabled = true; //Add report page ReportPage page = new ReportPage(); report.Pages.Add(page); page.CreateUniqueName(); //Create GroupHeader band GroupHeaderBand group = new GroupHeaderBand(); page.Bands.Add(group); group.CreateUniqueName(); group.Height = Units.Centimeters * 1; group.Condition = "[Products.ProductName].Substring(0,1)"; group.SortOrder = FastReport.SortOrder.Ascending; // create group text TextObject groupTxt = new TextObject(); groupTxt.Parent = group; groupTxt.CreateUniqueName(); groupTxt.Bounds = new RectangleF(0, 0, Units.Centimeters * 10, Units.Centimeters * 1); groupTxt.Text = "[[Products.ProductName].Substring(0,1)]"; groupTxt.Font = new Font("Arial", 14, FontStyle.Bold); groupTxt.VertAlign = VertAlign.Center; groupTxt.Fill = new LinearGradientFill(Color.LightGoldenrodYellow, Color.Gold, 90, 0.5f, 1); // create data band DataBand data = new DataBand(); group.Data = data; data.CreateUniqueName(); data.DataSource = report.GetDataSource("Products"); data.Height = Units.Centimeters * 0.5f; // create product name text TextObject productText = new TextObject(); productText.Parent = data; productText.CreateUniqueName(); productText.Bounds = new RectangleF(0, 0, Units.Centimeters * 10, Units.Centimeters * 0.5f); productText.Text = "[Products.ProductName]"; // create group footer group.GroupFooter = new GroupFooterBand(); group.GroupFooter.CreateUniqueName(); group.GroupFooter.Height = Units.Centimeters * 1; if (PDFCheckBox.Checked) { report.Prepare(); FastReport.Export.Pdf.PDFExport export = new FastReport.Export.Pdf.PDFExport(); export.Export(report); } else report.Show();
這是創建帶有組的報表模板的示例。如您所見,我們一直在創建報表對象,從報表和文本對象頁面開始。我們將創建的對象放入另一個對象,并配置其顯示的屬性。這要求FastReport.Net報表模板結構具有良好的性能。除此之外,為了實現所需的元素排列,您將有足夠的時間來運行報表以進行視覺評估并校正對象的屬性,以顯示所需的寬度或坐標。因此,這種方法應該是報表列表、矩陣、表格——無需調整元素相對于彼此的位置。
代碼中生成的報表的主要優點是能夠在執行期間編輯報表,并根據條件或事件添加代碼。這使您可以使用直接取決于客戶端應用程序本身的復雜邏輯來創建報表。
盡管擴展名是frx,FastReport.Net報表模板是類似xml的格式已經不是什么秘密了。這些模板易于通過查看器程序進行傳輸和在其他計算機上查看。移動性和與客戶端應用程序的獨立性——這是frx報表格式或以fpx格式填充數據的版本的傳統模式的不可否認的優勢。因此,在應用程序中從代碼生成報表后,許多人希望能夠將其轉換為類似xml的常規格式frx。這樣做非常簡單:
Report report = new Report(); report.Save("C:\\report.frx");
也就是說,您只需要在報表對象中使用“Save”保存功能。將參數傳遞到保存報表的文件名的路徑。因此,我們可以使用通過代碼創建的單個帳戶,并在必要時將其轉換為傳統格式frx。生成的文件可以傳輸到其他開發人員或用戶。
基于代碼的報表和frx報表都有其優勢。第一個是針對在需要“隨時隨地”直接更改報表時特別有效,第二個針對是在需要移動報表或模板中的許多元素之間具有明確定義的位置時使用。您需要根據自己的需求選擇一種基于這些優勢的創建報表的方法。