Package loci.poi.hssf.record
Class FormulaRecord
- java.lang.Object
-
- loci.poi.hssf.record.Record
-
- loci.poi.hssf.record.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)
-
-
Field Summary
Fields Modifier and Type Field Description static short
sid
-
Constructor Summary
Constructors Constructor Description FormulaRecord()
Creates new FormulaRecordFormulaRecord(RecordInputStream in)
Constructs a Formula record and sets its fields appropriately.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Object
clone()
int
compareTo(Object obj)
boolean
equals(Object obj)
protected void
fillFields(RecordInputStream in)
called by the constructor, should set class level fields.short
getColumn()
get the column this cell defines within the rowshort
getExpressionLength()
get the length (in number of tokens) of the expressionint
getNumberOfExpressionTokens()
get the size of the stackshort
getOptions()
get the option flagsList
getParsedExpression()
get the stack as a listint
getRecordSize()
gives the current serialized size of the record.int
getRow()
get the row this cell occurs onshort
getSid()
return the non static version of the id for this record.double
getValue()
get the calculated value of the formulashort
getXFIndex()
boolean
isAfter(CellValueRecordInterface i)
returns whether this cell is after the passed in cellboolean
isBefore(CellValueRecordInterface i)
returns whether this cell is before the passed in cellboolean
isEqual(CellValueRecordInterface i)
returns whether this cell represents the same cell (NOT VALUE)boolean
isInValueSection()
DBCELL, ROW, VALUES all say yesboolean
isSharedFormula()
boolean
isValue()
tells whether this type of record contains a valuePtg
peekExpressionToken()
peek at the token on the top of stackPtg
popExpressionToken()
pop a token off of the stackvoid
pushExpressionToken(Ptg ptg)
push a token onto the stackint
serialize(int offset, byte[] data)
called by the class that is responsible for writing this sucker.void
setColumn(short column)
set the column this cell defines within the rowvoid
setExpressionLength(short len)
set the length (in number of tokens) of the expressionvoid
setOptions(short options)
set the option flagsvoid
setParsedExpression(Stack ptgs)
void
setRow(int row)
set the row this cell occurs onvoid
setSharedFormula(boolean flag)
void
setValue(double value)
set the calculated value of the formulavoid
setXFIndex(short xf)
String
toString()
get a string representation of the record (for biffview/debugging)protected void
validateSid(short id)
called by constructor, should throw runtime exception in the event of a record passed with a differing ID.
-
-
-
Field Detail
-
sid
public static final short sid
- See Also:
- Constant Field Values
-
-
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 classRecord
- Parameters:
in
- the RecordInputstream to read the record from
-
setRow
public void setRow(int row)
Description copied from interface:CellValueRecordInterface
set the row this cell occurs on- Specified by:
setRow
in interfaceCellValueRecordInterface
- Parameters:
row
- the row this cell occurs within
-
setColumn
public void setColumn(short column)
Description copied from interface:CellValueRecordInterface
set the column this cell defines within the row- Specified by:
setColumn
in interfaceCellValueRecordInterface
- Parameters:
column
- the column this cell defines
-
setXFIndex
public void setXFIndex(short xf)
- Specified by:
setXFIndex
in interfaceCellValueRecordInterface
-
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
-
getRow
public int getRow()
Description copied from interface:CellValueRecordInterface
get the row this cell occurs on- Specified by:
getRow
in interfaceCellValueRecordInterface
- Returns:
- the row
-
getColumn
public short getColumn()
Description copied from interface:CellValueRecordInterface
get the column this cell defines within the row- Specified by:
getColumn
in interfaceCellValueRecordInterface
- Returns:
- the column
-
getXFIndex
public short getXFIndex()
- Specified by:
getXFIndex
in interfaceCellValueRecordInterface
-
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 classRecord
- 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.
-
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.
-
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 classRecord
-
isBefore
public boolean isBefore(CellValueRecordInterface i)
Description copied from interface:CellValueRecordInterface
returns whether this cell is before the passed in cell- Specified by:
isBefore
in interfaceCellValueRecordInterface
- Parameters:
i
- another cell interface record to compare- Returns:
- true if the cells is before, or false if not
-
isAfter
public boolean isAfter(CellValueRecordInterface i)
Description copied from interface:CellValueRecordInterface
returns whether this cell is after the passed in cell- Specified by:
isAfter
in interfaceCellValueRecordInterface
- Parameters:
i
- record to compare- Returns:
- true if the cell is after, false if not
-
isEqual
public boolean isEqual(CellValueRecordInterface i)
Description copied from interface:CellValueRecordInterface
returns whether this cell represents the same cell (NOT VALUE)- Specified by:
isEqual
in interfaceCellValueRecordInterface
- Parameters:
i
- record to compare- Returns:
- true if the cells are the same cell (positionally), false if not.
-
isInValueSection
public boolean isInValueSection()
Description copied from class:Record
DBCELL, ROW, VALUES all say yes- Overrides:
isInValueSection
in classRecord
-
isValue
public boolean isValue()
Description copied from class:Record
tells whether this type of record contains a value
-
compareTo
public int compareTo(Object obj)
- Specified by:
compareTo
in interfaceComparable
-
toString
public String toString()
Description copied from class:Record
get a string representation of the record (for biffview/debugging)
-
clone
public Object clone()
- Specified by:
clone
in interfaceCellValueRecordInterface
- Overrides:
clone
in classRecord
-
-