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

📄 namerecord.java

📁 java 读写word excel ppt
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    /** gets the definition, reference (Formula)     * @return definition -- can be null if we cant parse ptgs     */    public List getNameDefinition() {        return field_13_name_definition;    }    public void setNameDefinition(Stack nameDefinition) {        field_13_name_definition = nameDefinition;    }    /** get the custom menu text     * @return custom menu text     */    public String getCustomMenuText(){        return field_14_custom_menu_text;    }    /** gets the description text     * @return description text     */    public String getDescriptionText(){        return field_15_description_text;    }    /** get the help topic text     * @return gelp topic text     */    public String getHelpTopicText(){        return field_16_help_topic_text;    }    /** gets the status bar text     * @return status bar text     */    public String getStatusBarText(){        return field_17_status_bar_text;    }    /**     * 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 valid Name RECORD");        }    }        /**     * 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.     *     * @param offset to begin writing at     * @param data byte array containing instance data     * @return number of bytes written     */    public int serialize( int offset, byte[] data )    {        LittleEndian.putShort( data, 0 + offset, sid );        short size = (short)( 15 + getTextsLength() + getNameDefinitionSize());        LittleEndian.putShort( data, 2 + offset, size );        // size defined below        LittleEndian.putShort( data, 4 + offset, getOptionFlag() );        data[6 + offset] = getKeyboardShortcut();        data[7 + offset] = getNameTextLength();        LittleEndian.putShort( data, 8 + offset, getDefinitionLength() );        LittleEndian.putShort( data, 10 + offset, getUnused() );        LittleEndian.putShort( data, 12 + offset, getEqualsToIndexToSheet() );        data[14 + offset] = getCustomMenuLength();        data[15 + offset] = getDescriptionTextLength();        data[16 + offset] = getHelpTopicLength();        data[17 + offset] = getStatusBarLength();        data[18 + offset] = getCompressedUnicodeFlag();        /* temp: gjs        if (isBuiltInName())        {            LittleEndian.putShort( data, 2 + offset, (short) ( 16 + field_13_raw_name_definition.length ) );            data[19 + offset] = field_12_builtIn_name;            System.arraycopy( field_13_raw_name_definition, 0, data, 20 + offset, field_13_raw_name_definition.length );            return 20 + field_13_raw_name_definition.length;        }        else        {     */                        			int start_of_name_definition = 19 + field_3_length_name_text;			if (this.isBuiltInName()) {				//can send the builtin name directly in				data [19 + offset] =  this.getBuiltInName();			} else {				StringUtil.putCompressedUnicode( getNameText(), data, 19 + offset );							}			Ptg.serializePtgStack(field_13_name_definition,  data, start_of_name_definition + offset );            int start_of_custom_menu_text = start_of_name_definition + field_4_length_name_definition;            StringUtil.putCompressedUnicode( getCustomMenuText(), data, start_of_custom_menu_text + offset );            int start_of_description_text = start_of_custom_menu_text + field_7_length_custom_menu;            StringUtil.putCompressedUnicode( getDescriptionText(), data, start_of_description_text + offset );            int start_of_help_topic_text = start_of_description_text + field_8_length_description_text;            StringUtil.putCompressedUnicode( getHelpTopicText(), data, start_of_help_topic_text + offset );            int start_of_status_bar_text = start_of_help_topic_text + field_9_length_help_topic_text;            StringUtil.putCompressedUnicode( getStatusBarText(), data, start_of_status_bar_text + offset );            return getRecordSize();        /* } */    }    /** gets the length of all texts     * @return total length     */    public int getTextsLength(){        int result;        result = getNameTextLength() + getDescriptionTextLength() +        getHelpTopicLength() + getStatusBarLength();        return result;    }        private int getNameDefinitionSize() {    	int result = 0;        List list   = field_13_name_definition;                for (int k = 0; k < list.size(); k++)        {        	Ptg ptg = ( Ptg ) list.get(k);        	        	result += ptg.getSize();        }        return result;        }    /** returns the record size     */    public int getRecordSize(){        int result;        result = 19 + getTextsLength() + getNameDefinitionSize();                return result;    }    /** gets the extern sheet number     * @return extern sheet index     */    public short getExternSheetNumber(){        if (field_13_name_definition == null || field_13_name_definition.isEmpty()) return 0;        Ptg ptg = (Ptg) field_13_name_definition.peek();        short result = 0;        if (ptg.getClass() == Area3DPtg.class){            result = ((Area3DPtg) ptg).getExternSheetIndex();        } else if (ptg.getClass() == Ref3DPtg.class){            result = ((Ref3DPtg) ptg).getExternSheetIndex();        }        return result;    }    /** sets the extern sheet number     * @param externSheetNumber extern sheet number     */    public void setExternSheetNumber(short externSheetNumber){        Ptg ptg;        if (field_13_name_definition == null || field_13_name_definition.isEmpty()){            field_13_name_definition = new Stack();            ptg = createNewPtg();        } else {            ptg = (Ptg) field_13_name_definition.peek();        }        if (ptg.getClass() == Area3DPtg.class){            ((Area3DPtg) ptg).setExternSheetIndex(externSheetNumber);        } else if (ptg.getClass() == Ref3DPtg.class){            ((Ref3DPtg) ptg).setExternSheetIndex(externSheetNumber);        }    }    private Ptg createNewPtg(){        Ptg ptg = new Area3DPtg();        field_13_name_definition.push(ptg);        return ptg;    }    /** gets the reference , the area only (range)     * @return area reference     */    public String getAreaReference(Workbook book){        if (field_13_name_definition == null || field_13_name_definition.isEmpty()) return "Error";        Ptg ptg = (Ptg) field_13_name_definition.peek();        String result = "";        if (ptg.getClass() == Area3DPtg.class){            result = ptg.toFormulaString(book);        } else if (ptg.getClass() == Ref3DPtg.class){            result = ptg.toFormulaString(book);        } else if (ptg.getClass() == DeletedArea3DPtg.class || ptg.getClass() == DeletedRef3DPtg.class) {        	result = "#REF!"   ;     }        return result;    }    /** sets the reference , the area only (range)     * @param ref area reference     */    public void setAreaReference(String ref){        //Trying to find if what ptg do we need        RangeAddress ra = new RangeAddress(ref);        Ptg oldPtg;        Ptg ptg;        if (field_13_name_definition==null ||field_13_name_definition.isEmpty()){            field_13_name_definition = new Stack();            oldPtg = createNewPtg();        } else {            //Trying to find extern sheet index            oldPtg = (Ptg) field_13_name_definition.pop();        }        short externSheetIndex = 0;        if (oldPtg.getClass() == Area3DPtg.class){            externSheetIndex =  ((Area3DPtg) oldPtg).getExternSheetIndex();        } else if (oldPtg.getClass() == Ref3DPtg.class){            externSheetIndex =  ((Ref3DPtg) oldPtg).getExternSheetIndex();        }        if (ra.hasRange()) {            ptg = new Area3DPtg();            ((Area3DPtg) ptg).setExternSheetIndex(externSheetIndex);            ((Area3DPtg) ptg).setArea(ref);            this.setDefinitionTextLength((short)ptg.getSize());        } else {            ptg = new Ref3DPtg();            ((Ref3DPtg) ptg).setExternSheetIndex(externSheetIndex);            ((Ref3DPtg) ptg).setArea(ref);            this.setDefinitionTextLength((short)ptg.getSize());        }        field_13_name_definition.push(ptg);    }    /**     * called by the constructor, should set class level fields.  Should throw     * runtime exception for bad/icomplete data.     *     * @param data raw data     * @param size size of data     * @param offset of the record's data (provided a big array of the file)     */    protected void fillFields(RecordInputStream in) {        field_1_option_flag             = in.readShort();        field_2_keyboard_shortcut       = in.readByte();        field_3_length_name_text        = in.readByte();        field_4_length_name_definition  = in.readShort();        field_5_index_to_sheet          = in.readShort();        field_6_equals_to_index_to_sheet= in.readShort();        field_7_length_custom_menu      = in.readByte();        field_8_length_description_text = in.readByte();        field_9_length_help_topic_text  = in.readByte();        field_10_length_status_bar_text = in.readByte();            			//store the name in byte form if it's a builtin name        field_11_compressed_unicode_flag= in.readByte();        			if (this.isBuiltInName()) {                field_12_builtIn_name = in.readByte();        } else {                          if (field_11_compressed_unicode_flag == 1) {            field_12_name_text = in.readCompressedUnicode(field_3_length_name_text);          } else {            field_12_name_text = in.readCompressedUnicode(field_3_length_name_text);          }			}                    field_13_name_definition = Ptg.createParsedExpressionTokens(field_4_length_name_definition, in);            //Who says that this can only ever be compressed unicode???        field_14_custom_menu_text       = in.readCompressedUnicode(LittleEndian.ubyteToInt(field_7_length_custom_menu));            field_15_description_text       = in.readCompressedUnicode(LittleEndian.ubyteToInt(field_8_length_description_text));            field_16_help_topic_text        = in.readCompressedUnicode(LittleEndian.ubyteToInt(field_9_length_help_topic_text));            field_17_status_bar_text        = in.readCompressedUnicode(LittleEndian.ubyteToInt(field_10_length_status_bar_text));        /*} */    }    /**     * return the non static version of the id for this record.     */    public short getSid() {        return sid;    }    /*      20 00       00       01       1A 00 // sz = 0x1A = 26      00 00       01 00       00       00       00       00       00 // unicode flag      07 // name            29 17 00 3B 00 00 00 00 FF FF 00 00 02 00 3B 00 //{ 26      00 07 00 07 00 00 00 FF 00 10                   //  }                        20 00       00       01       0B 00 // sz = 0xB = 11      00 00       01 00       00       00       00       00       00 // unicode flag      07 // name            3B 00 00 07 00 07 00 00 00 FF 00   // { 11 }  */    /*      18, 00,       1B, 00,             20, 00,       00,       01,       0B, 00,       00,       00,       00,       00,       00,       07,       3B 00 00 07 00 07 00 00 00 FF 00 ]          */    /**     * @see Object#toString()     */    public String toString() {        StringBuffer buffer = new StringBuffer();        buffer.append("[NAME]\n");        buffer.append("    .option flags         = ").append( HexDump.toHex( field_1_option_flag ) )            .append("\n");        buffer.append("    .keyboard shortcut    = ").append( HexDump.toHex( field_2_keyboard_shortcut ) )            .append("\n");        buffer.append("    .length of the name   = ").append( field_3_length_name_text )            .append("\n");        buffer.append("    .size of the formula data = ").append( field_4_length_name_definition )            .append("\n");        buffer.append("    .unused                   = ").append( field_5_index_to_sheet )            .append("\n");        buffer.append("    .index to sheet (1-based, 0=Global)           = ").append( field_6_equals_to_index_to_sheet )            .append("\n");        buffer.append("    .Length of menu text (character count)        = ").append( field_7_length_custom_menu )            .append("\n");        buffer.append("    .Length of description text (character count) = ").append( field_8_length_description_text )            .append("\n");        buffer.append("    .Length of help topic text (character count)  = ").append( field_9_length_help_topic_text )            .append("\n");        buffer.append("    .Length of status bar text (character count)  = ").append( field_10_length_status_bar_text )            .append("\n");        buffer.append("    .Name (Unicode flag)  = ").append( field_11_compressed_unicode_flag )            .append("\n");        buffer.append("    .Name (Unicode text)  = ").append( getNameText() )            .append("\n");        buffer.append("    .Menu text (Unicode string without length field)        = ").append( field_14_custom_menu_text )            .append("\n");        buffer.append("    .Description text (Unicode string without length field) = ").append( field_15_description_text )            .append("\n");        buffer.append("    .Help topic text (Unicode string without length field)  = ").append( field_16_help_topic_text )            .append("\n");        buffer.append("    .Status bar text (Unicode string without length field)  = ").append( field_17_status_bar_text )            .append("\n");        buffer.append("[/NAME]\n");                return buffer.toString();    }	/**Creates a human readable name for built in types	 * @return Unknown if the built-in name cannot be translated	 */	protected String translateBuiltInName(byte name)	{	    switch (name)	    {	        case NameRecord.BUILTIN_AUTO_ACTIVATE :     return "Auto_Activate";	        case NameRecord.BUILTIN_AUTO_CLOSE :        return "Auto_Close";	        case NameRecord.BUILTIN_AUTO_DEACTIVATE :   return "Auto_Deactivate";	        case NameRecord.BUILTIN_AUTO_OPEN :         return "Auto_Open";	        case NameRecord.BUILTIN_CONSOLIDATE_AREA :  return "Consolidate_Area";	        case NameRecord.BUILTIN_CRITERIA :          return "Criteria";	        case NameRecord.BUILTIN_DATABASE :          return "Database";	        case NameRecord.BUILTIN_DATA_FORM :         return "Data_Form";            	        case NameRecord.BUILTIN_PRINT_AREA :        return "Print_Area";	        case NameRecord.BUILTIN_PRINT_TITLE :       return "Print_Titles";	        case NameRecord.BUILTIN_RECORDER :          return "Recorder";	        case NameRecord.BUILTIN_SHEET_TITLE :       return "Sheet_Title";	        	    }	    	    return "Unknown";	}}

⌨️ 快捷键说明

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