With the implementation of cross-sheet references in Spread, formulas can contain references to other sheets. If such formulas are loaded from a file, the Spread component must load sheets and formulas in a specific sequence for the cross-sheet references are to work. The parsing of formulas loaded from a file must be delayed until all the sheets in the workbook have been loaded. The Open methods in FpSpread handle this automatically, loading the XML and parsing in the correct order.
If you have created custom deserialization code, then you have to be careful. If your custom code loads individual sheets and adds them to a workbook, then you will need to add code to parse the formulas after the sheet has been added to the workbook. This can be done with the LoadFormulas method, available in the FpSpread class. This method is implemented in the DefaultSheetDataModel and SheetView classes as well as the FpSpread class. Using the LoadFormulas method at the sheet level calls the method on all the data models for a particular sheet; using the LoadFormulas method at the FpSpread level calls the method on all the sheets.
For example, the following code (in Visual Basic):
FpSpread.Sheets.Add(FarPoint.Win.Serializer.LoadObject(GetType (FarPoint.Win.Spread.SheetView), "C:\SavedSheet.xml", "RootNode"))
should be changed to:
FpSpread.Sheets.Add(FarPoint.Win.Serializer.LoadObject(GetType (FarPoint.Win.Spread.SheetView), "C:\SavedSheet.xml", "RootNode")) FpSpread.LoadFormulas()
This code should be called after the code that loads the sheet and adds it to the workbook.
For more details, refer to these methods:
- FpSpread LoadFormulas method
- SheetView LoadFormulas method
- DefaultSheetDataModel LoadFormulas method
- DefaultSheetDataModel ParseFormula method
For more information about formulas and cross-sheet referencing, refer to the Formula Reference.