何时是使用代码报表的最佳方法,何时采用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报表都有其优势。第一个是针对在需要“随时随地”直接更改报表时特别有效,第二个针对是在需要移动报表或模板中的许多元素之间具有明确定义的位置时使用。您需要根据自己的需求选择一种基于这些优势的创建报表的方法。