⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 formularecord.java

📁 Office格式转换代码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    {        return ( Ptg ) field_8_parsed_expr.peek();    }    /**     * get the size of the stack     * @return size of the stack     */    public int getNumberOfExpressionTokens()    {        if (this.field_8_parsed_expr == null) {            return 0;        } else {            return field_8_parsed_expr.size();        }    }    /**     * get the stack as a list     *     * @return 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!     */    public List getParsedExpression()    {        return field_8_parsed_expr;    }    /**     * called by constructor, should throw runtime exception in the event of a     * record passed with a differing ID.     *     * @param id alleged id for this record     */    protected void validateSid(short id)    {        if (id != sid)        {            throw new RecordFormatException("NOT A FORMULA RECORD");        }    }    public short getSid()    {        return sid;    }    /**     * 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.     *     * @return byte array containing instance data     */    public int serialize(int offset, byte [] data)    {        if (this.field_8_parsed_expr != null) {        int ptgSize = getTotalPtgSize();        LittleEndian.putShort(data, 0 + offset, sid);        LittleEndian.putShort(data, 2 + offset, ( short ) (22 + ptgSize));        //LittleEndian.putShort(data, 4 + offset, getRow());        LittleEndian.putShort(data, 4 + offset, ( short ) getRow());        LittleEndian.putShort(data, 6 + offset, getColumn());        LittleEndian.putShort(data, 8 + offset, getXFIndex());                //only reserialize if the value is still NaN and we have old nan data        if (Double.isNaN(this.getValue()) && value_data != null) {        				System.arraycopy(value_data,0,data,10 + offset,value_data.length);        } else {			LittleEndian.putDouble(data, 10 + offset, field_4_value);        }        	        LittleEndian.putShort(data, 18 + offset, getOptions());                //when writing the chn field (offset 20), it's supposed to be 0 but ignored on read        //Microsoft Excel Developer's Kit Page 318        LittleEndian.putInt(data, 20 + offset, 0);        LittleEndian.putShort(data, 24 + offset, getExpressionLength());        serializePtgs(data, 26+offset);        } else {            System.arraycopy(all_data,0,data,offset,all_data.length);        }        return getRecordSize();    }                public int getRecordSize()    {        int retval =0;                if (this.field_8_parsed_expr != null) {            retval = getTotalPtgSize() + 26;        } else {            retval =all_data.length;        }        return retval;        // return getTotalPtgSize() + 28;    }    private int getTotalPtgSize()    {        List list   = getParsedExpression();        int  retval = 0;        for (int k = 0; k < list.size(); k++)        {            Ptg ptg = ( Ptg ) list.get(k);            retval += ptg.getSize();        }        return retval;    }    private void serializePtgs(byte [] data, int offset)    {        int pos = offset;        for (int k = 0; k < field_8_parsed_expr.size(); k++)        {            Ptg ptg = ( Ptg ) field_8_parsed_expr.get(k);            ptg.writeBytes(data, pos);            pos += ptg.getSize();        }    }    public boolean isBefore(CellValueRecordInterface i)    {        if (this.getRow() > i.getRow())        {            return false;        }        if ((this.getRow() == i.getRow())                && (this.getColumn() > i.getColumn()))        {            return false;        }        if ((this.getRow() == i.getRow())                && (this.getColumn() == i.getColumn()))        {            return false;        }        return true;    }    public boolean isAfter(CellValueRecordInterface i)    {        if (this.getRow() < i.getRow())        {            return false;        }        if ((this.getRow() == i.getRow())                && (this.getColumn() < i.getColumn()))        {            return false;        }        if ((this.getRow() == i.getRow())                && (this.getColumn() == i.getColumn()))        {            return false;        }        return true;    }    public boolean isEqual(CellValueRecordInterface i)    {        return ((this.getRow() == i.getRow())                && (this.getColumn() == i.getColumn()));    }    public boolean isInValueSection()    {        return true;    }    public boolean isValue()    {        return true;    }    public int compareTo(Object obj)    {        CellValueRecordInterface loc = ( CellValueRecordInterface ) obj;        if ((this.getRow() == loc.getRow())                && (this.getColumn() == loc.getColumn()))        {            return 0;        }        if (this.getRow() < loc.getRow())        {            return -1;        }        if (this.getRow() > loc.getRow())        {            return 1;        }        if (this.getColumn() < loc.getColumn())        {            return -1;        }        if (this.getColumn() > loc.getColumn())        {            return 1;        }        return -1;    }    public boolean equals(Object obj)    {        if (!(obj instanceof CellValueRecordInterface))        {            return false;        }        CellValueRecordInterface loc = ( CellValueRecordInterface ) obj;        if ((this.getRow() == loc.getRow())                && (this.getColumn() == loc.getColumn()))        {            return true;        }        return false;    }            public String toString()    {        StringBuffer buffer = new StringBuffer();        if (EXPERIMENTAL_FORMULA_SUPPORT_ENABLED) {            buffer.append("[FORMULA]\n");            buffer.append("    .row       = ")                .append(Integer.toHexString(getRow())).append("\n");            buffer.append("    .column    = ")                .append(Integer.toHexString(getColumn()))                .append("\n");            buffer.append("    .xf              = ")                .append(Integer.toHexString(getXFIndex())).append("\n");            if (Double.isNaN(this.getValue()) && value_data != null)              buffer.append("    .value (NaN)     = ")                  .append(org.apache.poi.util.HexDump.dump(value_data,0,0))                  .append("\n");            else              buffer.append("    .value           = ").append(getValue())                  .append("\n");            buffer.append("    .options         = ").append(getOptions())                .append("\n");            buffer.append("    .zero            = ").append(field_6_zero)                .append("\n");            buffer.append("    .expressionlength= ").append(getExpressionLength())                .append("\n");            if (field_8_parsed_expr != null) {                buffer.append("    .numptgsinarray  = ").append(field_8_parsed_expr.size())                    .append("\n");                            for (int k = 0; k < field_8_parsed_expr.size(); k++ ) {                   buffer.append("Formula ")                        .append(k)                        .append("=")                        .append(field_8_parsed_expr.get(k).toString())                        .append("\n")                        .append(((Ptg)field_8_parsed_expr.get(k)).toDebugString())                        .append("\n");                }            }else {                buffer.append("Formula full data \n")                    .append(org.apache.poi.util.HexDump.dump(this.all_data,0,0));            }                                    buffer.append("[/FORMULA]\n");        } else {            buffer.append(super.toString());        }        return buffer.toString();    }        public Object clone() {      FormulaRecord rec = new FormulaRecord();      rec.field_1_row = field_1_row;      rec.field_2_column = field_2_column;      rec.field_3_xf = field_3_xf;      rec.field_4_value = field_4_value;      rec.field_5_options = field_5_options;      rec.field_6_zero = field_6_zero;      rec.field_7_expression_len = field_7_expression_len;      rec.field_8_parsed_expr = new Stack();      int size = 0;      if (field_8_parsed_expr != null)        size = field_8_parsed_expr.size();      for (int i=0; i< size; i++) {        Ptg ptg = (Ptg)((Ptg)field_8_parsed_expr.get(i)).clone();                rec.field_8_parsed_expr.add(i, ptg);      }      rec.value_data = value_data;      rec.all_data = all_data;      return rec;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -