Telerik报告?下载30天免费试用

用XML序列化报表定义

Telerik报告支持将报表定义序列化/反序列化为普通格式XML.的TRDX而且TRDP文件是声明性XML报告定义:

  • TRDX是一个自包含的XML报告定义。所有嵌入的图像都序列化在XML文件中。
  • TRDP是包含XML报告定义的ZIP归档文件。它还可能包含压缩在存档中的图像和本地化文件等资源。

报表序列化/反序列化在各种不同的场景中都很有用,并且提供了许多不容易通过其他方式实现的可能性。例如,这允许在应用程序中添加或修改报告,而无需重新编译或重新部署它。另一个典型场景是保存/加载动态生成的报表定义或通过网络传输它们。

为了更好地处理报表定义资源,我们还提供了ReportPackager它以XML格式序列化报告定义,并将其与其资源打包到一个zip压缩文件中。有关更多信息,请参阅:包报表定义

类别报告定义

XML报表定义的序列化/反序列化是通过专用的ReportXmlSerializer类。为了说明如何序列化和反序列化报表,让我们从一个简单的动态生成类报表定义开始:

var report = new Report1();报告。宽度= telerik . report . drawing . unit . inch (4);var detailSection = new Telerik.Reporting.DetailSection();detailSection。高度= telerik . report . drawing . unit . inch (0.2);report.Items.Add (detailSection);var numberTextBox = new Telerik.Reporting.TextBox();numberTextBox。Value = "=Fields.ProductNumber"; numberTextBox.Left = Telerik.Reporting.Drawing.Unit.Inch(0); numberTextBox.Top = Telerik.Reporting.Drawing.Unit.Inch(0); numberTextBox.Width = Telerik.Reporting.Drawing.Unit.Inch(2); numberTextBox.Height = Telerik.Reporting.Drawing.Unit.Inch(0.2); detailSection.Items.Add(numberTextBox); var nameTextBox = new Telerik.Reporting.TextBox(); nameTextBox.Value = "=Fields.Name"; nameTextBox.Left = Telerik.Reporting.Drawing.Unit.Inch(2); nameTextBox.Top = Telerik.Reporting.Drawing.Unit.Inch(0); nameTextBox.Width = Telerik.Reporting.Drawing.Unit.Inch(2); nameTextBox.Height = Telerik.Reporting.Drawing.Unit.Inch(0.2); detailSection.Items.Add(nameTextBox); var dataSource = new Telerik.Reporting.SqlDataSource(); dataSource.ConnectionString = "Data Source=.\\SqlExpress;Initial Catalog=AdventureWorks;Integrated Security=True"; dataSource.SelectCommand = "select ProductNumber, Name from Production.Product"; report.DataSource = dataSource;
暗淡报告作为新报告1()报告。宽度= Telerik.Reporting.Drawing.Unit.Inch(4) Dim detailSection As New Telerik.Reporting.DetailSection() detailSection。高度= Telerik.Reporting.Drawing.Unit.Inch(0.2) report.Items.Add(detailSection) Dim numberTextBox As New Telerik.Reporting.TextBox() numberTextBox. add ()Value = "=字段。numberTextBox ProductNumber”。左= Telerik.Reporting.Drawing.Unit.Inch numberTextBox(0)。Top = telerik . report . drawing . unit . inch (0) numberTextBox. txt。宽度= telerik . report . drawing . unit . inch (2)高度= Telerik.Reporting.Drawing.Unit.Inch(0.2) detailSection.Items.Add(numberTextBox) Dim nameTextBox As New Telerik.Reporting.TextBox() nameTextBox。Value = "=字段。“nameTextBox名称。左= Telerik.Reporting.Drawing.Unit.Inch(2) nameTextBox。Top = Telerik.Reporting.Drawing.Unit.Inch(0) nameTextBox。宽度= Telerik.Reporting.Drawing.Unit.Inch(2) nameTextBox。Height = Telerik.Reporting.Drawing.Unit.Inch(0.2) detailSection.Items.Add(nameTextBox) Dim dataSource As New Telerik.Reporting.SqlDataSource() dataSource.ConnectionString = "Data Source=.\SqlExpress;Initial Catalog=AdventureWorks;Integrated Security=True" dataSource.SelectCommand = "select ProductNumber, Name from Production.Product" report.DataSource = dataSource

序列化为XML

下面的示例代码演示了如何将上述报告定义序列化为XML文件:

使用(System.Xml。XmlWriter XmlWriter = System.Xml.XmlWriter.Create("SerializedReport.xml")) {Telerik.Reporting.XmlSerialization.ReportXmlSerializer xmlSerializer = new Telerik.Reporting.XmlSerialization.ReportXmlSerializer();xmlSerializer。xmlWriter序列化(报告);}
使用xmlWriter作为System.Xml.XmlWriter = System.Xml.XmlWriter. create ("SerializedReport.xml") Dim xmlSerializer作为新的telererik . reporting . xmlserialization . reportxmlserializer () xmlSerializer。Serialize(xmlWriter, report

从XML反序列化

可用于从文件中反序列化报告定义的相应代码如下所示:

System.Xml.XmlReaderSettings设置= new System.Xml.XmlReaderSettings();设置。IgnoreWhitespace = true;使用(System.Xml。XmlReader XmlReader = System.Xml.XmlReader.Create("Report1.xml", settings)) {Telerik.Reporting.XmlSerialization.ReportXmlSerializer xmlSerializer = new Telerik.Reporting.XmlSerialization.ReportXmlSerializer();Telerik.Reporting.Report report = (Telerik.Reporting.Report) xmlSerializer.Deserialize(xmlReader);}
Dim设置为New XmlReaderSettings()设置。IgnoreWhitespace = True使用xmlReader As System.Xml.XmlReader = System.Xml.XmlReader. create ("Report1.xml", settings) Dim xmlSerializer As New Telerik.Reporting.XmlSerialization.ReportXmlSerializer() Dim report As Telerik.Reporting.Report = DirectCast(xmlSerializer. deserialize (xmlReader), Telerik.Reporting.Report)结束使用

生成的XML文件如下所示:

XML报表定义

              < margin >     
在本文中
Baidu
map