Class FormulaRecord

  • All Implemented Interfaces:
    Comparable, CellValueRecordInterface

    public class FormulaRecord
    extends Record
    implements CellValueRecordInterface, Comparable
    Formula Record. REFERENCE: PG 317/444 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)

    Version:
    2.0-pre
    Author:
    Andrew C. Oliver (acoliver at apache dot org), Jason Height (jheight at chariot dot net dot au)
    • Constructor Detail

      • FormulaRecord

        public FormulaRecord()
        Creates new FormulaRecord
      • FormulaRecord

        public FormulaRecord​(RecordInputStream in)
        Constructs a Formula record and sets its fields appropriately. Note - id must be 0x06 (NOT 0x406 see MSKB #Q184647 for an "explanation of this bug in the documentation) or an exception will be throw upon validation
        Parameters:
        in - the RecordInputstream to read the record from
    • Method Detail

      • fillFields

        protected void fillFields​(RecordInputStream in)
        Description copied from class: Record
        called by the constructor, should set class level fields. Should throw runtime exception for bad/icomplete data.
        Specified by:
        fillFields in class Record
        Parameters:
        in - the RecordInputstream to read the record from
      • setValue

        public void setValue​(double value)
        set the calculated value of the formula
        Parameters:
        value - calculated value
      • setOptions

        public void setOptions​(short options)
        set the option flags
        Parameters:
        options - bitmask
      • setExpressionLength

        public void setExpressionLength​(short len)
        set the length (in number of tokens) of the expression
        Parameters:
        len - length
      • getValue

        public double getValue()
        get the calculated value of the formula
        Returns:
        calculated value
      • getOptions

        public short getOptions()
        get the option flags
        Returns:
        bitmask
      • isSharedFormula

        public boolean isSharedFormula()
      • setSharedFormula

        public void setSharedFormula​(boolean flag)
      • getExpressionLength

        public short getExpressionLength()
        get the length (in number of tokens) of the expression
        Returns:
        expression length
      • pushExpressionToken

        public void pushExpressionToken​(Ptg ptg)
        push a token onto the stack
        Parameters:
        ptg - the token
      • popExpressionToken

        public Ptg popExpressionToken()
        pop a token off of the stack
        Returns:
        Ptg - the token
      • peekExpressionToken

        public Ptg peekExpressionToken()
        peek at the token on the top of stack
        Returns:
        Ptg - the token
      • getNumberOfExpressionTokens

        public int getNumberOfExpressionTokens()
        get the size of the stack
        Returns:
        size of the stack
      • getParsedExpression

        public List getParsedExpression()
        get the stack as a list
        Returns:
        list of tokens (casts stack to a list and returns it!) this method can return null is we are unable to create Ptgs from existing excel file callers should check for null!
      • setParsedExpression

        public void setParsedExpression​(Stack ptgs)
      • validateSid

        protected void validateSid​(short id)
        called by constructor, should throw runtime exception in the event of a record passed with a differing ID.
        Specified by:
        validateSid in class Record
        Parameters:
        id - alleged id for this record
      • getSid

        public short getSid()
        Description copied from class: Record
        return the non static version of the id for this record.
        Specified by:
        getSid in class Record
      • serialize

        public int serialize​(int offset,
                             byte[] data)
        called by the class that is responsible for writing this sucker. Subclasses should implement this so that their data is passed back in a byte array.
        Specified by:
        serialize in class Record
        Parameters:
        offset - to begin writing at
        data - byte array containing instance data
        Returns:
        byte array containing instance data
      • getRecordSize

        public int getRecordSize()
        Description copied from class: Record
        gives the current serialized size of the record. Should include the sid and reclength (4 bytes).
        Overrides:
        getRecordSize in class Record
      • isInValueSection

        public boolean isInValueSection()
        Description copied from class: Record
        DBCELL, ROW, VALUES all say yes
        Overrides:
        isInValueSection in class Record
      • isValue

        public boolean isValue()
        Description copied from class: Record
        tells whether this type of record contains a value
        Overrides:
        isValue in class Record
      • toString

        public String toString()
        Description copied from class: Record
        get a string representation of the record (for biffview/debugging)
        Overrides:
        toString in class Record