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

📄 objrecord.java

📁 jxtl API Java中Excel的生成与导入解析参考文档
💻 JAVA
字号:
/***********************************************************************      Copyright (C) 2001 Andrew Khan** This library is free software; you can redistribute it and/or* modify it under the terms of the GNU Lesser General Public* License as published by the Free Software Foundation; either* version 2.1 of the License, or (at your option) any later version.** This library is distributed in the hope that it will be useful,* but WITHOUT ANY WARRANTY; without even the implied warranty of* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU* Lesser General Public License for more details.** You should have received a copy of the GNU Lesser General Public* License along with this library; if not, write to the Free Software* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA***************************************************************************/package jxl.biff.drawing;import common.Assert;import common.Logger;import jxl.biff.IntegerHelper;import jxl.biff.Type;import jxl.biff.WritableRecordData;import jxl.read.biff.Record;/** * A record which merely holds the OBJ data.  Used when copying files which * contain images */public class ObjRecord extends WritableRecordData{  /**   * The logger   */  private static final Logger logger = Logger.getLogger(ObjRecord.class);  /**   * The object type   */  private ObjType type;  /**   * Indicates whether this record was read in   */  private boolean read;  /**   * The object id   */  private int objectId;  /**   * Object type enumeration   */  private static final class ObjType  {    public int value;    public String desc;    private static ObjType[] types = new ObjType[0];    ObjType(int v, String d)    {      value = v;      desc = d;      ObjType[] oldtypes = types;      types = new ObjType[types.length + 1];      System.arraycopy(oldtypes, 0, types, 0, oldtypes.length);      types[oldtypes.length] = this;    }    public String toString()    {      return desc;    }    public static ObjType getType(int val)    {      ObjType retval = UNKNOWN;      for (int i = 0; i < types.length && retval == UNKNOWN; i++)      {        if (types[i].value == val)        {          retval = types[i];        }      }      return retval;    }  }  // The object types  public static final ObjType TBD2 = new ObjType(0x01, "TBD2");  public static final ObjType TBD = new ObjType(0x02, "TBD");  public static final ObjType CHART = new ObjType(0x05, "Chart");  public static final ObjType TEXT = new ObjType(0x06, "Text");  public static final ObjType BUTTON = new ObjType(0x07, "Button");  public static final ObjType PICTURE = new ObjType(0x08, "Picture");  public static final ObjType CHECKBOX = new ObjType(0x0e, "Checkbox");  public static final ObjType OPTION = new ObjType(0x0c, "Option");  public static final ObjType EDITBOX = new ObjType(0x0d, "Edit Box");  public static final ObjType LABEL = new ObjType(0x0e, "Label");  public static final ObjType DIALOGUEBOX = new ObjType(0x0f, "Dialogue Box");  public static final ObjType LISTBOX = new ObjType(0x12, "List Box");  public static final ObjType GROUPBOX = new ObjType(0x13, "Group Box");  public static final ObjType COMBOBOX = new ObjType(0x14, "Combo Box");  public static final ObjType MSOFFICEDRAWING = new ObjType    (0x1e, "MS Office Drawing");  public static final ObjType FORMCONTROL =    new ObjType (0x14, "Form Combo Box");  public static final ObjType EXCELNOTE =    new ObjType (0x19, "Excel Note");  public static final ObjType UNKNOWN = new ObjType(0xff, "Unknown");  // Field sub records  private static final int COMMON_DATA_LENGTH = 22;  private static final int CLIPBOARD_FORMAT_LENGTH = 6;  private static final int PICTURE_OPTION_LENGTH = 6;  private static final int NOTE_STRUCTURE_LENGTH = 26;  private static final int COMBOBOX_STRUCTURE_LENGTH = 44;  private static final int END_LENGTH = 4;  /**   * Constructs this object from the raw data   *   * @param t the raw data   */  public ObjRecord(Record t)  {    super(t);    byte[] data = t.getData();    int objtype = IntegerHelper.getInt(data[4], data[5]);    read = true;    type = ObjType.getType(objtype);    if (type == UNKNOWN)    {      logger.warn("unknown object type code " + objtype);    }    objectId = IntegerHelper.getInt(data[6], data[7]);  }  /**   * Constructor   *   * @param objId the object id   * @param t the object type   */  ObjRecord(int objId, ObjType t)  {    super(Type.OBJ);    objectId = objId;    type = t;  }  /**   * Expose the protected function to the SheetImpl in this package   *   * @return the raw record data   */  public byte[] getData()  {    if (read)    {      return getRecord().getData();    }    if (type == PICTURE || type == CHART)    {      return getPictureData();    }    else if (type == EXCELNOTE)    {      return getNoteData();    }    else if (type == COMBOBOX)    {      return getComboBoxData();    }    else    {      Assert.verify(false);    }    return null;  }  /**   * Gets the ObjRecord subrecords for a picture   *   * @return the binary data for the picture   */  private byte[] getPictureData()  {    int dataLength = COMMON_DATA_LENGTH +      CLIPBOARD_FORMAT_LENGTH +      PICTURE_OPTION_LENGTH +      END_LENGTH;    int pos = 0;    byte[] data = new byte[dataLength];    // The common data    // record id    IntegerHelper.getTwoBytes(0x15, data, pos);    // record length    IntegerHelper.getTwoBytes(COMMON_DATA_LENGTH - 4, data, pos + 2);    // object type    IntegerHelper.getTwoBytes(type.value, data, pos + 4);    // object id    IntegerHelper.getTwoBytes(objectId, data, pos + 6);    // the options    IntegerHelper.getTwoBytes(0x6011, data, pos + 8);    pos += COMMON_DATA_LENGTH;    // The clipboard format    // record id    IntegerHelper.getTwoBytes(0x7, data, pos);    // record length    IntegerHelper.getTwoBytes(CLIPBOARD_FORMAT_LENGTH - 4, data, pos + 2);    // the data    IntegerHelper.getTwoBytes(0xffff, data, pos + 4);    pos += CLIPBOARD_FORMAT_LENGTH;    // Picture option flags    // record id    IntegerHelper.getTwoBytes(0x8, data, pos);    // record length    IntegerHelper.getTwoBytes(PICTURE_OPTION_LENGTH - 4, data, pos + 2);    // the data    IntegerHelper.getTwoBytes(0x1, data, pos + 4);    pos += CLIPBOARD_FORMAT_LENGTH;    // End  record id    IntegerHelper.getTwoBytes(0x0, data, pos);    // record length    IntegerHelper.getTwoBytes(END_LENGTH - 4, data, pos + 2);    // the data    pos += END_LENGTH;    return data;  }  /**   * Gets the ObjRecord subrecords for a note   *   * @return  the note data   */  private byte[] getNoteData()  {    int dataLength = COMMON_DATA_LENGTH +      NOTE_STRUCTURE_LENGTH +      END_LENGTH;    int pos = 0;    byte[] data = new byte[dataLength];    // The common data    // record id    IntegerHelper.getTwoBytes(0x15, data, pos);    // record length    IntegerHelper.getTwoBytes(COMMON_DATA_LENGTH - 4, data, pos + 2);    // object type    IntegerHelper.getTwoBytes(type.value, data, pos + 4);    // object id    IntegerHelper.getTwoBytes(objectId, data, pos + 6);    // the options    IntegerHelper.getTwoBytes(0x4011, data, pos + 8);    pos += COMMON_DATA_LENGTH;    // The note structure    // record id    IntegerHelper.getTwoBytes(0xd, data, pos);    // record length    IntegerHelper.getTwoBytes(NOTE_STRUCTURE_LENGTH - 4, data, pos + 2);    // the data    pos += NOTE_STRUCTURE_LENGTH;    // End    // record id    IntegerHelper.getTwoBytes(0x0, data, pos);    // record length    IntegerHelper.getTwoBytes(END_LENGTH - 4, data, pos + 2);    // the data    pos += END_LENGTH;    return data;  }  /**   * Gets the ObjRecord subrecords for a combo box   *   * @return returns the binary data for a combo box   */  private byte[] getComboBoxData()  {    int dataLength = COMMON_DATA_LENGTH +      COMBOBOX_STRUCTURE_LENGTH +      END_LENGTH;    int pos = 0;    byte[] data = new byte[dataLength];    // The common data    // record id    IntegerHelper.getTwoBytes(0x15, data, pos);    // record length    IntegerHelper.getTwoBytes(COMMON_DATA_LENGTH - 4, data, pos + 2);    // object type    IntegerHelper.getTwoBytes(type.value, data, pos + 4);    // object id    IntegerHelper.getTwoBytes(objectId, data, pos + 6);    // the options    IntegerHelper.getTwoBytes(0x0, data, pos + 8);    pos += COMMON_DATA_LENGTH;    // The combo box structure    // record id    IntegerHelper.getTwoBytes(0xc, data, pos);    // record length    IntegerHelper.getTwoBytes(0x14, data, pos + 2);    // the data    data[pos + 14] = 0x01;    data[pos + 16] = 0x04;    data[pos + 20] = 0x10;    data[pos + 24] = 0x13;    data[pos + 26] = (byte) 0xee;    data[pos + 27] = 0x1f;    data[pos + 30] = 0x04;    data[pos + 34] = 0x01;    data[pos + 35] = 0x06;    data[pos + 38] = 0x02;    data[pos + 40] = 0x08;    data[pos + 42] = 0x40;    pos += COMBOBOX_STRUCTURE_LENGTH;    // End    // record id    IntegerHelper.getTwoBytes(0x0, data, pos);    // record length    IntegerHelper.getTwoBytes(END_LENGTH - 4, data, pos + 2);    // the data    pos += END_LENGTH;    return data;  }  /**   * Expose the protected function to the SheetImpl in this package   *   * @return the raw record data   */  public Record getRecord()  {    return super.getRecord();  }  /**   * Accessor for the object type   *   * @return the object type   */  public ObjType getType()  {    return type;  }  /**   * Accessor for the object id   *   * @return accessor for the object id   */  public int getObjectId()  {    return objectId;  }}

⌨️ 快捷键说明

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