org.apache.poi.hssf.record
Class RKRecord

java.lang.Object
  extended by org.apache.poi.hssf.record.RecordBase
      extended by org.apache.poi.hssf.record.Record
          extended by org.apache.poi.hssf.record.StandardRecord
              extended by org.apache.poi.hssf.record.CellRecord
                  extended by org.apache.poi.hssf.record.RKRecord
All Implemented Interfaces:
CellValueRecordInterface

public final class RKRecord
extends CellRecord

Title: RK Record (0x027E)

Description: An internal 32 bit number with the two most significant bits storing the type. This is part of a bizarre scheme to save disk space and memory (gee look at all the other whole records that are in the file just "cause"..,far better to waste processor cycles on this then leave on of those "valuable" records out).

We support this in READ-ONLY mode. HSSF converts these to NUMBER records

REFERENCE: PG 376 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)

Author:
Andrew C. Oliver (acoliver at apache dot org), Jason Height (jheight at chariot dot net dot au)
See Also:
NumberRecord

Field Summary
static short RK_IEEE_NUMBER
           
static short RK_IEEE_NUMBER_TIMES_100
           
static short RK_INTEGER
           
static short RK_INTEGER_TIMES_100
           
static short sid
           
 
Constructor Summary
RKRecord(RecordInputStream in)
           
 
Method Summary
protected  void appendValueText(java.lang.StringBuilder sb)
          Append specific debug info (used by CellRecord.toString() for the value contained in this record.
 java.lang.Object clone()
           
protected  java.lang.String getRecordName()
          Gets the debug info BIFF record type name (used by CellRecord.toString().
 double getRKNumber()
          Extract the value of the number
 short getSid()
          return the non static version of the id for this record.
protected  int getValueDataSize()
           
protected  void serializeValue(LittleEndianOutput out)
          writes out the value data for this cell record
 
Methods inherited from class org.apache.poi.hssf.record.CellRecord
copyBaseFields, getColumn, getDataSize, getRow, getXFIndex, serialize, setColumn, setRow, setXFIndex, toString
 
Methods inherited from class org.apache.poi.hssf.record.StandardRecord
getRecordSize, serialize
 
Methods inherited from class org.apache.poi.hssf.record.Record
cloneViaReserialise, serialize
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

sid

public static final short sid
See Also:
Constant Field Values

RK_IEEE_NUMBER

public static final short RK_IEEE_NUMBER
See Also:
Constant Field Values

RK_IEEE_NUMBER_TIMES_100

public static final short RK_IEEE_NUMBER_TIMES_100
See Also:
Constant Field Values

RK_INTEGER

public static final short RK_INTEGER
See Also:
Constant Field Values

RK_INTEGER_TIMES_100

public static final short RK_INTEGER_TIMES_100
See Also:
Constant Field Values
Constructor Detail

RKRecord

public RKRecord(RecordInputStream in)
Method Detail

getRKNumber

public double getRKNumber()
Extract the value of the number

The mechanism for determining the value is dependent on the two low order bits of the raw number. If bit 1 is set, the number is an integer and can be cast directly as a double, otherwise, it's apparently the exponent and mantissa of a double (and the remaining low-order bits of the double's mantissa are 0's).

If bit 0 is set, the result of the conversion to a double is divided by 100; otherwise, the value is left alone.

[insert picture of Screwy Squirrel in full Napoleonic regalia]

Returns:
the value as a proper double (hey, it could happen)

getRecordName

protected java.lang.String getRecordName()
Description copied from class: CellRecord
Gets the debug info BIFF record type name (used by CellRecord.toString().

Specified by:
getRecordName in class CellRecord

appendValueText

protected void appendValueText(java.lang.StringBuilder sb)
Description copied from class: CellRecord
Append specific debug info (used by CellRecord.toString() for the value contained in this record. Trailing new-line should not be appended (superclass does that).

Specified by:
appendValueText in class CellRecord

serializeValue

protected void serializeValue(LittleEndianOutput out)
Description copied from class: CellRecord
writes out the value data for this cell record

Specified by:
serializeValue in class CellRecord

getValueDataSize

protected int getValueDataSize()
Specified by:
getValueDataSize in class CellRecord
Returns:
the size (in bytes) of the value data for this cell 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

clone

public java.lang.Object clone()
Overrides:
clone in class Record


Copyright 2012 The Apache Software Foundation or its licensors, as applicable.