Workbooks can be serialized as XML documents. To do that, call the SaveToXml method of the Workbook class. To deserialize a workbook back from its XML representation, call the LoadFromXml method. The control raises the SerializeTag and DeserializeTag events to enable serialization of complex Tag objects. The following code illustrates how to serialize and deserialize a custom worksheet tag:
C#
Copy Code
|
---|
// The custom class that will be used as a tag public class SampleData { public string CategoryId { get; set; }
public int OrderNumber { get; set; } }
...
// The SerializeTag event handler private void OnSerializeTag(object sender, SerializeTagEventArgs e) { var sampleData = e.Tag as SampleData; var dataElement = e.Context.AddChildElement("Data", e.Representation); e.Context.WriteString(sampleData.CategoryId, "CategoryId", dataElement); e.Context.WriteInt(sampleData.OrderNumber, "OrderNumber", dataElement); e.Handled = true; }
// The DeserializeTag event handler private void OnDeserializeTag(object sender, SerializeTagEventArgs e) { var dataElement = e.Representation.Element("Data"); var categoryId = e.Context.ReadString("CategoryId", dataElement); var orderNumber = e.Context.ReadInt("OrderNumber", dataElement); e.Tag = new SampleData { CategoryId = categoryId, OrderNumber = orderNumber }; e.Handled = true; } |
Visual Basic
Copy Code
|
---|
' The custom class that will be used as a tag Public Class SampleData
Public Property CategoryId() As String Get Return _categoryId End Get Set(ByVal value As String) _categoryId = value End Set End Property
Public Property OrderNumber() As Integer Get Return _orderNumber End Get Set(ByVal value As Integer) _orderNumber = value End Set End Property
Private _categoryId As String Private _orderNumber As Integer
End Class
...
' The SerializeTag event handler Private Sub OnSerializeTag(ByVal sender As Object, ByVal e As SerializeTagEventArgs) Dim sampleData = CType(e.Tag, SampleData) Dim dataElement = e.Context.AddChildElement("Data", e.Representation) e.Context.WriteString(sampleData.CategoryId, "CategoryId", dataElement) e.Context.WriteInt(sampleData.OrderNumber, "OrderNumber", dataElement) e.Handled = True End Sub
' The DeserializeTag event handler Private Sub OnDeserializeTag(ByVal sender As Object, ByVal e As SerializeTagEventArgs) Dim dataElement = e.Representation.Element("Data") Dim categoryId = e.Context.ReadString("CategoryId", dataElement) Dim orderNumber = e.Context.ReadInt("OrderNumber", dataElement) e.Tag = New SampleData With {.CategoryId = categoryId, .OrderNumber = orderNumber} e.Handled = True End Sub |