Represents a spreadsheet model in memory. It can be constructed from different spreadsheet file formats, for example Excel .xls and .xml, and OpenOffice Calc (see {@link SpreadsheetCompiler#loadSpreadsheet(java.io.File)}). It serves as input to the {@link SpreadsheetToEngineCompiler} implementations and thus decouples engine compilation fromthe different spreadsheet file formats supported by AFC.
The spreadsheet model is immutable except for one thing. As a convenience, you can add custom range names to be used by {@link #getCell(String)}, {@link #getRange(String)}, and {@link #getRangeNames()}. These are never used internally to resolve formula references and do not affect the semantics of the spreadsheet model. We support this convenience so that code already written against the {@link #getCell(String)} API can transparently profit from namesextracted from a spreadsheet's layout, for instance.
The handling of additional range names is not thread-safe.
This interface is an API only. Do not implement it yourself.
@see SpreadsheetLoader
@see SpreadsheetBuilder
@see SpreadsheetToEngineCompiler
@author peo