Search
Serializing the Workbook

Saving and Loading Workbooks

It is possible to save a workbook as an XML document. 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:

Java  Copy Code

// The custom class that will be used as a tag
public class SampleData
{
    public SampleData(String categoryId, int orderNumber)
    {
        this.categoryId = categoryId;
        this.orderNumber = orderNumber;
    }
 
    public String getCategoryId() { return categoryId; }
    public void setCategoryId(String value) { categoryId = value; }

    public int getOrderNumber() { return orderNumber; }
    public void setOrderNumber(int value) { orderNumber = value; }

    private String categoryId;
    private int orderNumber;
}

...

workbook.addWorkbookListener(new WorkbookAdapter()
{
    @Override
    public void serializeTag(SerializeTagEvent e)
    {
        SampleData sampleData = (SampleData)e.getTag();;
        Element dataElement = e.getContext().addChildElement("Data", e.getRepresentation());
        e.getContext().writeString(sampleData.getCategoryId(), "CategoryId", dataElement);
        e.getContext().writeInt(sampleData.getOrderNumber(), "OrderNumber", dataElement);
        e.setHandled(true);
    }

    @Override
    public void deserializeTag(SerializeTagEvent e)
    {
        Element dataElement = XmlContext.element(e.getRepresentation(), "Data");
        String categoryId = e.getContext().readString("CategoryId", dataElement);
        int orderNumber = e.getContext().readInt("OrderNumber", dataElement);
        e.setTag(new SampleData(categoryId, orderNumber));
        e.setHandled(true);
    }
});