Index: src/java/org/apache/poi/hssf/model/Sheet.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/model/Sheet.java,v retrieving revision 1.8 diff -u -r1.8 Sheet.java --- src/java/org/apache/poi/hssf/model/Sheet.java 3 May 2002 04:55:07 -0000 1.8 +++ src/java/org/apache/poi/hssf/model/Sheet.java 9 May 2002 21:37:01 -0000 @@ -347,7 +347,8 @@ } } - public int addMergedRegion(short rowFrom, short colFrom, short rowTo, + //public int addMergedRegion(short rowFrom, short colFrom, short rowTo, + public int addMergedRegion(int rowFrom, short colFrom, int rowTo, short colTo) { if (merged == null) @@ -456,7 +457,8 @@ * @see org.apache.poi.hssf.record.DimensionsRecord */ - public void setDimensions(short firstrow, short firstcol, short lastrow, + //public void setDimensions(short firstrow, short firstcol, short lastrow, + public void setDimensions(int firstrow, short firstcol, int lastrow, short lastcol) { log.log(log.DEBUG, "Sheet.setDimensions"); @@ -627,7 +629,8 @@ log.log(log.DEBUG, "create row number " + row); RowRecord rowrec = new RowRecord(); - rowrec.setRowNumber(( short ) row); + //rowrec.setRowNumber(( short ) row); + rowrec.setRowNumber(row); rowrec.setHeight(( short ) 0xff); rowrec.setOptimize(( short ) 0x0); rowrec.setOptionFlags(( short ) 0x0); @@ -645,7 +648,8 @@ * @see org.apache.poi.hssf.record.SSTRecord */ - public LabelSSTRecord createLabelSST(short row, short col, int index) + //public LabelSSTRecord createLabelSST(short row, short col, int index) + public LabelSSTRecord createLabelSST(int row, short col, int index) { log.logFormatted(log.DEBUG, "create labelsst row,col,index %,%,%", new int[] @@ -671,7 +675,8 @@ * @return NumberRecord for that row, col containing that value as added to the sheet */ - public NumberRecord createNumber(short row, short col, double value) + //public NumberRecord createNumber(short row, short col, double value) + public NumberRecord createNumber(int row, short col, double value) { log.logFormatted(log.DEBUG, "create number row,col,value %,%,%", new double[] @@ -680,7 +685,8 @@ }); NumberRecord rec = new NumberRecord(); - rec.setRow(( short ) row); + //rec.setRow(( short ) row); + rec.setRow(row); rec.setColumn(col); rec.setValue(value); rec.setXFIndex(( short ) 0x0f); @@ -694,15 +700,18 @@ * @param col - the column the BlankRecord is a member of */ - public BlankRecord createBlank(short row, short col) + //public BlankRecord createBlank(short row, short col) + public BlankRecord createBlank(int row, short col) { - log.logFormatted(log.DEBUG, "create blank row,col %,%", new short[] + //log.logFormatted(log.DEBUG, "create blank row,col %,%", new short[] + log.logFormatted(log.DEBUG, "create blank row,col %,%", new int[] { row, col }); BlankRecord rec = new BlankRecord(); - rec.setRow(( short ) row); + //rec.setRow(( short ) row); + rec.setRow(row); rec.setColumn(col); rec.setXFIndex(( short ) 0x0f); return rec; @@ -718,10 +727,12 @@ * @return bogus/useless formula record */ - public FormulaRecord createFormula(short row, short col, String formula) + //public FormulaRecord createFormula(short row, short col, String formula) + public FormulaRecord createFormula(int row, short col, String formula) { log.logFormatted(log.DEBUG, "create formula row,col,formula %,%,%", - new short[] + //new short[] + new int[] { row, col }, formula); @@ -759,7 +770,8 @@ * @param col the cell value record itself. */ - public void addValueRecord(short row, CellValueRecordInterface col) + //public void addValueRecord(short row, CellValueRecordInterface col) + public void addValueRecord(int row, CellValueRecordInterface col) { checkCells(); log.logFormatted(log.DEBUG, "add value record row,loc %,%", new int[] @@ -812,7 +824,8 @@ * @see org.apache.poi.hssf.record.CellValueRecordInterface */ - public void removeValueRecord(short row, CellValueRecordInterface col) + //public void removeValueRecord(short row, CellValueRecordInterface col) + public void removeValueRecord(int row, CellValueRecordInterface col) { checkCells(); log.logFormatted(log.DEBUG, "remove value record row,dimsloc %,%", @@ -1135,7 +1148,8 @@ * */ - public RowRecord getRow(short rownum) + //public RowRecord getRow(short rownum) + public RowRecord getRow(int rownum) { log.log(log.DEBUG, "getNextRow loc= " + loc); return rows.getRow(rownum); Index: src/java/org/apache/poi/hssf/record/BlankRecord.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/BlankRecord.java,v retrieving revision 1.2 diff -u -r1.2 BlankRecord.java --- src/java/org/apache/poi/hssf/record/BlankRecord.java 11 Feb 2002 03:49:39 -0000 1.2 +++ src/java/org/apache/poi/hssf/record/BlankRecord.java 9 May 2002 21:37:01 -0000 @@ -75,7 +75,8 @@ implements CellValueRecordInterface, Comparable { public final static short sid = 0x201; - private short field_1_row; + //private short field_1_row; + private int field_1_row; private short field_2_col; private short field_3_xf; @@ -114,7 +115,8 @@ protected void fillFields(byte [] data, short size, int offset) { - field_1_row = LittleEndian.getShort(data, 0 + offset); + //field_1_row = LittleEndian.getShort(data, 0 + offset); + field_1_row = LittleEndian.getUShort(data, 0 + offset); field_2_col = LittleEndian.getShort(data, 2 + offset); field_3_xf = LittleEndian.getShort(data, 4 + offset); } @@ -139,7 +141,8 @@ * @param row the row this cell occurs within */ - public void setRow(short row) + //public void setRow(short row) + public void setRow(int row) { field_1_row = row; } @@ -150,7 +153,8 @@ * @return the row */ - public short getRow() + //public short getRow() + public int getRow() { return field_1_row; } @@ -290,7 +294,8 @@ { LittleEndian.putShort(data, 0 + offset, sid); LittleEndian.putShort(data, 2 + offset, ( short ) 6); - LittleEndian.putShort(data, 4 + offset, getRow()); + //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()); return getRecordSize(); Index: src/java/org/apache/poi/hssf/record/BoolErrRecord.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/BoolErrRecord.java,v retrieving revision 1.2 diff -u -r1.2 BoolErrRecord.java --- src/java/org/apache/poi/hssf/record/BoolErrRecord.java 11 Feb 2002 03:49:39 -0000 1.2 +++ src/java/org/apache/poi/hssf/record/BoolErrRecord.java 9 May 2002 21:37:01 -0000 @@ -74,7 +74,8 @@ implements CellValueRecordInterface, Comparable { public final static short sid = 0x205; - private short field_1_row; + //private short field_1_row; + private int field_1_row; private short field_2_column; private short field_3_xf_index; private byte field_4_bBoolErr; @@ -123,14 +124,16 @@ protected void fillFields(byte [] data, short size, int offset) { - field_1_row = LittleEndian.getShort(data, 0 + offset); + //field_1_row = LittleEndian.getShort(data, 0 + offset); + field_1_row = LittleEndian.getUShort(data, 0 + offset); field_2_column = LittleEndian.getShort(data, 2 + offset); field_3_xf_index = LittleEndian.getShort(data, 4 + offset); field_4_bBoolErr = data[ 6 + offset ]; field_5_fError = data[ 7 + offset ]; } - public void setRow(short row) + //public void setRow(short row) + public void setRow(int row) { field_1_row = row; } @@ -176,7 +179,8 @@ field_5_fError = ( byte ) 1; } - public short getRow() + //public short getRow() + public int getRow() { return field_1_row; } @@ -278,7 +282,8 @@ { LittleEndian.putShort(data, 0 + offset, sid); LittleEndian.putShort(data, 2 + offset, ( short ) 8); - LittleEndian.putShort(data, 4 + offset, getRow()); + //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()); data[ 10 + offset ] = field_4_bBoolErr; Index: src/java/org/apache/poi/hssf/record/CellValueRecordInterface.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/CellValueRecordInterface.java,v retrieving revision 1.2 diff -u -r1.2 CellValueRecordInterface.java --- src/java/org/apache/poi/hssf/record/CellValueRecordInterface.java 11 Feb 2002 10:45:50 -0000 1.2 +++ src/java/org/apache/poi/hssf/record/CellValueRecordInterface.java 9 May 2002 21:37:01 -0000 @@ -81,7 +81,8 @@ * @return the row */ - public short getRow(); + //public short getRow(); + public int getRow(); /** * get the column this cell defines within the row @@ -96,7 +97,8 @@ * @param row the row this cell occurs within */ - public void setRow(short row); + //public void setRow(short row); + public void setRow(int row); /** * set the column this cell defines within the row Index: src/java/org/apache/poi/hssf/record/DBCellRecord.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/DBCellRecord.java,v retrieving revision 1.2 diff -u -r1.2 DBCellRecord.java --- src/java/org/apache/poi/hssf/record/DBCellRecord.java 11 Feb 2002 03:49:39 -0000 1.2 +++ src/java/org/apache/poi/hssf/record/DBCellRecord.java 9 May 2002 21:37:01 -0000 @@ -115,7 +115,7 @@ protected void fillFields(byte [] data, short size, int offset) { - field_1_row_offset = LittleEndian.getShort(data, 0 + offset); + field_1_row_offset = LittleEndian.getUShort(data, 0 + offset); field_2_cell_offsets = new short[ (size - 4) / 2 ]; int element = 0; Index: src/java/org/apache/poi/hssf/record/FormulaRecord.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/FormulaRecord.java,v retrieving revision 1.11 diff -u -r1.11 FormulaRecord.java --- src/java/org/apache/poi/hssf/record/FormulaRecord.java 30 Apr 2002 03:05:07 -0000 1.11 +++ src/java/org/apache/poi/hssf/record/FormulaRecord.java 9 May 2002 21:37:01 -0000 @@ -83,7 +83,8 @@ public static final short sid = 0x06; // docs say 406...because of a bug Microsoft support site article #Q184647) - private short field_1_row; + //private short field_1_row; + private int field_1_row; private short field_2_column; private short field_3_xf; private double field_4_value; @@ -134,7 +135,8 @@ protected void fillFields(byte [] data, short size, int offset) { if (EXPERIMENTAL_FORMULA_SUPPORT_ENABLED) { - field_1_row = LittleEndian.getShort(data, 0 + offset); + //field_1_row = LittleEndian.getShort(data, 0 + offset); + field_1_row = LittleEndian.getUShort(data, 0 + offset); field_2_column = LittleEndian.getShort(data, 2 + offset); field_3_xf = LittleEndian.getShort(data, 4 + offset); field_4_value = LittleEndian.getDouble(data, 6 + offset); @@ -169,7 +171,8 @@ return stack; } - public void setRow(short row) + //public void setRow(short row) + public void setRow(int row) { field_1_row = row; } @@ -216,7 +219,8 @@ field_7_expression_len = len; } - public short getRow() + //public short getRow() + public int getRow() { return field_1_row; } @@ -352,7 +356,8 @@ 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, getRow()); + LittleEndian.putShort(data, 4 + offset, ( short ) getRow()); LittleEndian.putShort(data, 6 + offset, getColumn()); LittleEndian.putShort(data, 8 + offset, getXFIndex()); LittleEndian.putDouble(data, 10 + offset, getValue()); Index: src/java/org/apache/poi/hssf/record/LabelRecord.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/LabelRecord.java,v retrieving revision 1.2 diff -u -r1.2 LabelRecord.java --- src/java/org/apache/poi/hssf/record/LabelRecord.java 11 Feb 2002 03:49:39 -0000 1.2 +++ src/java/org/apache/poi/hssf/record/LabelRecord.java 9 May 2002 21:37:02 -0000 @@ -77,7 +77,8 @@ implements CellValueRecordInterface { public final static short sid = 0x204; - private short field_1_row; + //private short field_1_row; + private int field_1_row; private short field_2_column; private short field_3_xf_index; private short field_4_string_len; @@ -142,7 +143,8 @@ protected void fillFields(byte [] data, short size, int offset) { - field_1_row = LittleEndian.getShort(data, 0 + offset); + //field_1_row = LittleEndian.getShort(data, 0 + offset); + field_1_row = LittleEndian.getUShort(data, 0 + offset); field_2_column = LittleEndian.getShort(data, 2 + offset); field_3_xf_index = LittleEndian.getShort(data, 4 + offset); field_4_string_len = LittleEndian.getShort(data, 6 + offset); @@ -171,7 +173,8 @@ field_3_xf_index = index; } */ - public short getRow() + //public short getRow() + public int getRow() { return field_1_row; } @@ -299,7 +302,8 @@ * NO-OP! */ - public void setRow(short row) + //public void setRow(short row) + public void setRow(int row) { } Index: src/java/org/apache/poi/hssf/record/LabelSSTRecord.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/LabelSSTRecord.java,v retrieving revision 1.2 diff -u -r1.2 LabelSSTRecord.java --- src/java/org/apache/poi/hssf/record/LabelSSTRecord.java 11 Feb 2002 03:49:39 -0000 1.2 +++ src/java/org/apache/poi/hssf/record/LabelSSTRecord.java 9 May 2002 21:37:02 -0000 @@ -71,7 +71,8 @@ implements CellValueRecordInterface, Comparable { public final static short sid = 0xfd; - private short field_1_row; + //private short field_1_row; + private int field_1_row; private short field_2_column; private short field_3_xf_index; private int field_4_sst_index; @@ -117,13 +118,15 @@ protected void fillFields(byte [] data, short size, int offset) { - field_1_row = LittleEndian.getShort(data, 0 + offset); + //field_1_row = LittleEndian.getShort(data, 0 + offset); + field_1_row = LittleEndian.getUShort(data, 0 + offset); field_2_column = LittleEndian.getShort(data, 2 + offset); field_3_xf_index = LittleEndian.getShort(data, 4 + offset); field_4_sst_index = LittleEndian.getInt(data, 6 + offset); } - public void setRow(short row) + //public void setRow(short row) + public void setRow(int row) { field_1_row = row; } @@ -157,7 +160,8 @@ field_4_sst_index = index; } - public short getRow() + //public short getRow() + public int getRow() { return field_1_row; } @@ -212,7 +216,8 @@ { LittleEndian.putShort(data, 0 + offset, sid); LittleEndian.putShort(data, 2 + offset, ( short ) 10); - LittleEndian.putShort(data, 4 + offset, getRow()); + //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()); LittleEndian.putInt(data, 10 + offset, getSSTIndex()); Index: src/java/org/apache/poi/hssf/record/MergeCellsRecord.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/MergeCellsRecord.java,v retrieving revision 1.3 diff -u -r1.3 MergeCellsRecord.java --- src/java/org/apache/poi/hssf/record/MergeCellsRecord.java 11 Feb 2002 10:45:50 -0000 1.3 +++ src/java/org/apache/poi/hssf/record/MergeCellsRecord.java 9 May 2002 21:37:02 -0000 @@ -163,7 +163,8 @@ * @return new index of said area (don't depend on it if you add/remove) */ - public int addArea(short rowfrom, short colfrom, short rowto, short colto) + //public int addArea(short rowfrom, short colfrom, short rowto, short colto) + public int addArea(int rowfrom, short colfrom, int rowto, short colto) { if (field_2_regions == null) { @@ -224,9 +225,11 @@ { MergedRegion region = getAreaAt(k); - LittleEndian.putShort(data, offset + pos, region.row_from); + //LittleEndian.putShort(data, offset + pos, region.row_from); + LittleEndian.putShort(data, offset + pos, ( short ) region.row_from); pos += 2; - LittleEndian.putShort(data, offset + pos, region.row_to); + //LittleEndian.putShort(data, offset + pos, region.row_to); + LittleEndian.putShort(data, offset + pos, ( short ) region.row_to); pos += 2; LittleEndian.putShort(data, offset + pos, region.col_from); pos += 2; @@ -283,7 +286,8 @@ * create a merged region all in one stroke. */ - public MergedRegion(short row_from, short row_to, short col_from, + //public MergedRegion(short row_from, short row_to, short col_from, + public MergedRegion(int row_from, int row_to, short col_from, short col_to) { this.row_from = row_from; @@ -296,13 +300,15 @@ * upper lefthand corner row */ - public short row_from; + //public short row_from; + public int row_from; /** * lower right hand corner row */ - public short row_to; + //public short row_to; + public int row_to; /** * upper right hand corner col Index: src/java/org/apache/poi/hssf/record/MulBlankRecord.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/MulBlankRecord.java,v retrieving revision 1.2 diff -u -r1.2 MulBlankRecord.java --- src/java/org/apache/poi/hssf/record/MulBlankRecord.java 11 Feb 2002 03:49:39 -0000 1.2 +++ src/java/org/apache/poi/hssf/record/MulBlankRecord.java 9 May 2002 21:37:02 -0000 @@ -78,7 +78,8 @@ extends Record { public final static short sid = 0xbe; - private short field_1_row; + //private short field_1_row; + private int field_1_row; private short field_2_first_col; private short[] field_3_xfs; private short field_4_last_col; @@ -122,7 +123,8 @@ * @return row number */ - public short getRow() + //public short getRow() + public int getRow() { return field_1_row; } @@ -178,7 +180,8 @@ protected void fillFields(byte [] data, short size, int offset) { - field_1_row = LittleEndian.getShort(data, 0 + offset); + //field_1_row = LittleEndian.getShort(data, 0 + offset); + field_1_row = LittleEndian.getUShort(data, 0 + offset); field_2_first_col = LittleEndian.getShort(data, 2 + offset); field_3_xfs = parseXFs(data, 4, offset, size); field_4_last_col = LittleEndian.getShort(data, Index: src/java/org/apache/poi/hssf/record/MulRKRecord.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/MulRKRecord.java,v retrieving revision 1.3 diff -u -r1.3 MulRKRecord.java --- src/java/org/apache/poi/hssf/record/MulRKRecord.java 22 Apr 2002 07:13:09 -0000 1.3 +++ src/java/org/apache/poi/hssf/record/MulRKRecord.java 9 May 2002 21:37:02 -0000 @@ -77,7 +77,8 @@ extends Record { public final static short sid = 0xbd; - private short field_1_row; + //private short field_1_row; + private int field_1_row; private short field_2_first_col; private ArrayList field_3_rks; private short field_4_last_col; @@ -115,7 +116,8 @@ super(id, size, data, offset); } - public short getRow() + //public short getRow() + public int getRow() { return field_1_row; } @@ -180,7 +182,8 @@ protected void fillFields(byte [] data, short size, int offset) { - field_1_row = LittleEndian.getShort(data, 0 + offset); + //field_1_row = LittleEndian.getShort(data, 0 + offset); + field_1_row = LittleEndian.getUShort(data, 0 + offset); field_2_first_col = LittleEndian.getShort(data, 2 + offset); field_3_rks = parseRKs(data, 4, offset, size); field_4_last_col = LittleEndian.getShort(data, Index: src/java/org/apache/poi/hssf/record/NumberRecord.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/NumberRecord.java,v retrieving revision 1.4 diff -u -r1.4 NumberRecord.java --- src/java/org/apache/poi/hssf/record/NumberRecord.java 22 Apr 2002 07:13:09 -0000 1.4 +++ src/java/org/apache/poi/hssf/record/NumberRecord.java 9 May 2002 21:37:02 -0000 @@ -75,7 +75,8 @@ implements CellValueRecordInterface, Comparable { public static final short sid = 0x203; - private short field_1_row; + //private short field_1_row; + private int field_1_row; private short field_2_col; private short field_3_xf; private double field_4_value; @@ -122,13 +123,15 @@ protected void fillFields(byte [] data, short size, int offset) { - field_1_row = LittleEndian.getShort(data, 0 + offset); + //field_1_row = LittleEndian.getShort(data, 0 + offset); + field_1_row = LittleEndian.getUShort(data, 0 + offset); field_2_col = LittleEndian.getShort(data, 2 + offset); field_3_xf = LittleEndian.getShort(data, 4 + offset); field_4_value = LittleEndian.getDouble(data, 6 + offset); } - public void setRow(short row) + //public void setRow(short row) + public void setRow(int row) { field_1_row = row; } @@ -160,7 +163,8 @@ field_4_value = value; } - public short getRow() + //public short getRow() + public int getRow() { return field_1_row; } @@ -221,7 +225,8 @@ { LittleEndian.putShort(data, 0 + offset, sid); LittleEndian.putShort(data, 2 + offset, ( short ) 14); - LittleEndian.putShort(data, 4 + offset, getRow()); + //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()); LittleEndian.putDouble(data, 10 + offset, getValue()); Index: src/java/org/apache/poi/hssf/record/RKRecord.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/RKRecord.java,v retrieving revision 1.4 diff -u -r1.4 RKRecord.java --- src/java/org/apache/poi/hssf/record/RKRecord.java 22 Apr 2002 07:13:09 -0000 1.4 +++ src/java/org/apache/poi/hssf/record/RKRecord.java 9 May 2002 21:37:03 -0000 @@ -84,7 +84,8 @@ public final static short RK_IEEE_NUMBER_TIMES_100 = 1; public final static short RK_INTEGER = 2; public final static short RK_INTEGER_TIMES_100 = 3; - private short field_1_row; + //private short field_1_row; + private int field_1_row; private short field_2_col; private short field_3_xf_index; private int field_4_rk_number; @@ -130,13 +131,15 @@ protected void fillFields(byte [] data, short size, int offset) { - field_1_row = LittleEndian.getShort(data, 0 + offset); + //field_1_row = LittleEndian.getShort(data, 0 + offset); + field_1_row = LittleEndian.getUShort(data, 0 + offset); field_2_col = LittleEndian.getShort(data, 2 + offset); field_3_xf_index = LittleEndian.getShort(data, 4 + offset); field_4_rk_number = LittleEndian.getInt(data, 6 + offset); } - public short getRow() + //public short getRow() + public int getRow() { return field_1_row; } @@ -324,7 +327,8 @@ { } - public void setRow(short row) + //public void setRow(short row) + public void setRow(int row) { } Index: src/java/org/apache/poi/hssf/record/RowRecord.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/RowRecord.java,v retrieving revision 1.4 diff -u -r1.4 RowRecord.java --- src/java/org/apache/poi/hssf/record/RowRecord.java 24 Apr 2002 14:35:11 -0000 1.4 +++ src/java/org/apache/poi/hssf/record/RowRecord.java 9 May 2002 21:37:03 -0000 @@ -71,7 +71,8 @@ implements Comparable { public final static short sid = 0x208; - private short field_1_row_number; + //private short field_1_row_number; + private int field_1_row_number; private short field_2_first_col; private short field_3_last_col; // plus 1 private short field_4_height; @@ -130,7 +131,8 @@ protected void fillFields(byte [] data, short size, int offset) { - field_1_row_number = LittleEndian.getShort(data, 0 + offset); + //field_1_row_number = LittleEndian.getShort(data, 0 + offset); + field_1_row_number = LittleEndian.getUShort(data, 0 + offset); field_2_first_col = LittleEndian.getShort(data, 2 + offset); field_3_last_col = LittleEndian.getShort(data, 4 + offset); field_4_height = LittleEndian.getShort(data, 6 + offset); @@ -145,7 +147,8 @@ * @param row - the row number */ - public void setRowNumber(short row) + //public void setRowNumber(short row) + public void setRowNumber(int row) { field_1_row_number = row; } @@ -281,7 +284,8 @@ * @return row - the row number */ - public short getRowNumber() + //public short getRowNumber() + public int getRowNumber() { return field_1_row_number; } @@ -451,7 +455,8 @@ { LittleEndian.putShort(data, 0 + offset, sid); LittleEndian.putShort(data, 2 + offset, ( short ) 16); - LittleEndian.putShort(data, 4 + offset, getRowNumber()); + //LittleEndian.putShort(data, 4 + offset, getRowNumber()); + LittleEndian.putShort(data, 4 + offset, ( short ) getRowNumber()); LittleEndian.putShort(data, 6 + offset, getFirstCol() == -1 ? (short)0 : getFirstCol()); LittleEndian.putShort(data, 8 + offset, getLastCol() == -1 ? (short)0 : getLastCol()); LittleEndian.putShort(data, 10 + offset, getHeight()); Index: src/java/org/apache/poi/hssf/record/SelectionRecord.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/record/SelectionRecord.java,v retrieving revision 1.3 diff -u -r1.3 SelectionRecord.java --- src/java/org/apache/poi/hssf/record/SelectionRecord.java 11 Feb 2002 10:45:50 -0000 1.3 +++ src/java/org/apache/poi/hssf/record/SelectionRecord.java 9 May 2002 21:37:03 -0000 @@ -75,7 +75,8 @@ { public final static short sid = 0x1d; private byte field_1_pane; - private short field_2_row_active_cell; + //private short field_2_row_active_cell; + private int field_2_row_active_cell; private short field_3_col_active_cell; private short field_4_ref_active_cell; private short field_5_num_refs; @@ -123,7 +124,8 @@ protected void fillFields(byte [] data, short size, int offset) { field_1_pane = data[ 0 + offset ]; - field_2_row_active_cell = LittleEndian.getShort(data, 1 + offset); + //field_2_row_active_cell = LittleEndian.getShort(data, 1 + offset); + field_2_row_active_cell = LittleEndian.getUShort(data, 1 + offset); field_3_col_active_cell = LittleEndian.getShort(data, 3 + offset); field_4_ref_active_cell = LittleEndian.getShort(data, 5 + offset); field_5_num_refs = LittleEndian.getShort(data, 7 + offset); @@ -144,7 +146,8 @@ * @param row number of active cell */ - public void setActiveCellRow(short row) + //public void setActiveCellRow(short row) + public void setActiveCellRow(int row) { field_2_row_active_cell = row; } @@ -194,7 +197,8 @@ * @return row number of active cell */ - public short getActiveCellRow() + //public short getActiveCellRow() + public int getActiveCellRow() { return field_2_row_active_cell; } @@ -254,7 +258,8 @@ LittleEndian.putShort(data, 0 + offset, sid); LittleEndian.putShort(data, 2 + offset, ( short ) 15); data[ 4 + offset ] = getPane(); - LittleEndian.putShort(data, 5 + offset, getActiveCellRow()); + //LittleEndian.putShort(data, 5 + offset, getActiveCellRow()); + LittleEndian.putShort(data, 5 + offset, ( short ) getActiveCellRow()); LittleEndian.putShort(data, 7 + offset, getActiveCellCol()); LittleEndian.putShort(data, 9 + offset, getActiveCellRef()); LittleEndian.putShort(data, 11 + offset, ( short ) 1); Index: src/java/org/apache/poi/hssf/usermodel/HSSFCell.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java,v retrieving revision 1.8 diff -u -r1.8 HSSFCell.java --- src/java/org/apache/poi/hssf/usermodel/HSSFCell.java 28 Apr 2002 02:04:58 -0000 1.8 +++ src/java/org/apache/poi/hssf/usermodel/HSSFCell.java 9 May 2002 21:37:04 -0000 @@ -156,7 +156,8 @@ private short encoding; private Workbook book; private Sheet sheet; - private short row; + //private short row; + private int row; private CellValueRecordInterface record; /** @@ -176,7 +177,8 @@ * @see org.apache.poi.hssf.usermodel.HSSFRow#createCell(short) */ - protected HSSFCell(Workbook book, Sheet sheet, short row, short col) + //protected HSSFCell(Workbook book, Sheet sheet, short row, short col) + protected HSSFCell(Workbook book, Sheet sheet, int row, short col) { cellNum = col; this.row = row; @@ -213,7 +215,8 @@ * and use setCellValue to specify the type lazily. */ - protected HSSFCell(Workbook book, Sheet sheet, short row, short col, + //protected HSSFCell(Workbook book, Sheet sheet, short row, short col, + protected HSSFCell(Workbook book, Sheet sheet, int row, short col, int type) { cellNum = col; @@ -286,7 +289,8 @@ * @param cval - the Cell Value Record we wish to represent */ - protected HSSFCell(Workbook book, Sheet sheet, short row, + //protected HSSFCell(Workbook book, Sheet sheet, short row, + protected HSSFCell(Workbook book, Sheet sheet, int row, CellValueRecordInterface cval) { cellNum = cval.getColumn(); Index: src/java/org/apache/poi/hssf/usermodel/HSSFRow.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/usermodel/HSSFRow.java,v retrieving revision 1.10 diff -u -r1.10 HSSFRow.java --- src/java/org/apache/poi/hssf/usermodel/HSSFRow.java 28 Apr 2002 05:22:19 -0000 1.10 +++ src/java/org/apache/poi/hssf/usermodel/HSSFRow.java 9 May 2002 21:37:04 -0000 @@ -82,7 +82,8 @@ // used for collections public final static int INITIAL_CAPACITY = 5; - private short rowNum; + //private short rowNum; + private int rowNum; private HashMap cells; // private short firstcell = -1; // private short lastcell = -1; @@ -118,7 +119,8 @@ * @see org.apache.poi.hssf.usermodel.HSSFSheet#createRow(short) */ - protected HSSFRow(Workbook book, Sheet sheet, short rowNum) + //protected HSSFRow(Workbook book, Sheet sheet, short rowNum) + protected HSSFRow(Workbook book, Sheet sheet, int rowNum) { this.rowNum = rowNum; cells = new HashMap(10); // new ArrayList(INITIAL_CAPACITY); @@ -145,7 +147,7 @@ protected HSSFRow(Workbook book, Sheet sheet, RowRecord record) { - this.rowNum = rowNum; + //this.rowNum = rowNum; cells = new HashMap(); // ArrayList(INITIAL_CAPACITY); this.book = book; this.sheet = sheet; @@ -243,7 +245,8 @@ * @param rowNum the row number (0-based) */ - public void setRowNum(short rowNum) + //public void setRowNum(short rowNum) + public void setRowNum(int rowNum) { this.rowNum = rowNum; if (row != null) @@ -257,7 +260,8 @@ * @return the row number (0 based) */ - public short getRowNum() + //public short getRowNum() + public int getRowNum() { return rowNum; } Index: src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java,v retrieving revision 1.7 diff -u -r1.7 HSSFSheet.java --- src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java 3 May 2002 04:55:07 -0000 1.7 +++ src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java 9 May 2002 21:37:05 -0000 @@ -189,7 +189,8 @@ * @see #removeRow(HSSFRow) */ - public HSSFRow createRow(short rownum) + //public HSSFRow createRow(short rownum) + public HSSFRow createRow(int rownum) { HSSFRow row = new HSSFRow(book, sheet, rownum); @@ -315,7 +316,8 @@ { HSSFRow row = new HSSFRow(); - row.setRowNum((short) rownum); + //row.setRowNum((short) rownum); + row.setRowNum( rownum); return (HSSFRow) rows.get(row); } @@ -464,9 +466,11 @@ public int addMergedRegion(Region region) { - return sheet.addMergedRegion((short) region.getRowFrom(), + //return sheet.addMergedRegion((short) region.getRowFrom(), + return sheet.addMergedRegion( region.getRowFrom(), region.getColumnFrom(), - (short) region.getRowTo(), + //(short) region.getRowTo(), + region.getRowTo(), region.getColumnTo()); } Index: src/java/org/apache/poi/util/LittleEndian.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/java/org/apache/poi/util/LittleEndian.java,v retrieving revision 1.5 diff -u -r1.5 LittleEndian.java --- src/java/org/apache/poi/util/LittleEndian.java 19 Apr 2002 22:30:50 -0000 1.5 +++ src/java/org/apache/poi/util/LittleEndian.java 9 May 2002 21:37:07 -0000 @@ -91,10 +91,31 @@ public static short getShort(final byte[] data, final int offset) { - return (short) getNumber(data, offset, SHORT_SIZE); + return (short)getNumber(data, offset, SHORT_SIZE); } /** + * get an unsigned short value from a byte array + * + * @param data the byte array + * @param offset a starting offset into the byte array + * + * @return the unsigned short (16-bit) value in an integer + * + * @exception ArrayIndexOutOfBoundsException may be thrown + */ + public static int getUShort(final byte[] data, final int offset) + { + short num = (short)getNumber(data, offset, SHORT_SIZE); + int retNum; + if (num < 0) + retNum = ((int)Short.MAX_VALUE+1)*2+(int)num; + else + retNum = (int)num; + return retNum; + } + + /** * get a short array from a byte array. */ public static short[] getSimpleShortArray(final byte[] data, final int offset, final int size) @@ -130,6 +151,20 @@ public static short getShort(final byte[] data) { return getShort(data, 0); + } + + /** + * get an unsigned short value from the beginning of a byte array + * + * @param data the byte array + * + * @return the unsigned short (16-bit) value in an int + * + * @exception ArrayIndexOutOfBoundsException may be thrown + */ + public static int getUShort(final byte[] data) + { + return getUShort(data, 0); } /** Index: src/testcases/org/apache/poi/hssf/record/TestFormulaRecord.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/testcases/org/apache/poi/hssf/record/TestFormulaRecord.java,v retrieving revision 1.1 diff -u -r1.1 TestFormulaRecord.java --- src/testcases/org/apache/poi/hssf/record/TestFormulaRecord.java 17 Apr 2002 22:47:39 -0000 1.1 +++ src/testcases/org/apache/poi/hssf/record/TestFormulaRecord.java 9 May 2002 21:37:08 -0000 @@ -77,11 +77,13 @@ public void testCreateFormulaRecord () { FormulaRecord record = new FormulaRecord(); record.setColumn((short)0); - record.setRow((short)1); + //record.setRow((short)1); + record.setRow(1); record.setXFIndex((short)4); assertEquals(record.getColumn(),(short)0); - assertEquals(record.getRow(),(short)1); + //assertEquals(record.getRow(),(short)1); + assertEquals((short)record.getRow(),(short)1); assertEquals(record.getXFIndex(),(short)4); } Index: src/testcases/org/apache/poi/hssf/usermodel/TestWorkbook.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/testcases/org/apache/poi/hssf/usermodel/TestWorkbook.java,v retrieving revision 1.2 diff -u -r1.2 TestWorkbook.java --- src/testcases/org/apache/poi/hssf/usermodel/TestWorkbook.java 29 Apr 2002 11:10:29 -0000 1.2 +++ src/testcases/org/apache/poi/hssf/usermodel/TestWorkbook.java 9 May 2002 21:37:09 -0000 @@ -611,6 +611,42 @@ assertEquals(1, sstRecords); } + + public void testManyRows() + throws Exception + { + String testName = "TestManyRows"; + File file = File.createTempFile(testName, ".xls"); + FileOutputStream out = new FileOutputStream(file); + HSSFWorkbook workbook = new HSSFWorkbook(); + HSSFSheet sheet = workbook.createSheet(); + HSSFRow row = null; + HSSFCell cell = null; + int i, j; + for ( i = 0, j = 32771; j > 0; i++, j-- ) + { + row = sheet.createRow(i); + cell = row.createCell((short) 0); + cell.setCellValue(i); + } + workbook.write(out); + out.close(); + sanityChecker.checkHSSFWorkbook(workbook); + assertEquals("LAST ROW == 32770", 32770, sheet.getLastRowNum()); + double lastVal = cell.getNumericCellValue(); + + FileInputStream in = new FileInputStream(file); + POIFSFileSystem fs = new POIFSFileSystem(in); + HSSFWorkbook wb = new HSSFWorkbook(fs); + HSSFSheet s = wb.getSheetAt(0); + row = s.getRow(32770); + cell = row.getCell(( short ) 0); + assertEquals("Value from last row == 32770", lastVal, cell.getNumericCellValue(), 0); + assertEquals("LAST ROW == 32770", 32770, s.getLastRowNum()); + in.close(); + file.deleteOnExit(); + } + public static void main(String [] ignored_args) { String filename = System.getProperty("HSSF.testdata.path"); Index: src/testcases/org/apache/poi/util/TestLittleEndian.java =================================================================== RCS file: /home/cvspublic/jakarta-poi/src/testcases/org/apache/poi/util/TestLittleEndian.java,v retrieving revision 1.2 diff -u -r1.2 TestLittleEndian.java --- src/testcases/org/apache/poi/util/TestLittleEndian.java 3 Mar 2002 09:31:58 -0000 1.2 +++ src/testcases/org/apache/poi/util/TestLittleEndian.java 9 May 2002 21:37:11 -0000 @@ -101,6 +101,48 @@ assertEquals(expected[ 1 ], LittleEndian.getShort(testdata, 1)); } + public void testGetUShort() + { + byte[] testdata = new byte[ LittleEndian.SHORT_SIZE + 1 ]; + + testdata[ 0 ] = 0x01; + testdata[ 1 ] = ( byte ) 0xFF; + testdata[ 2 ] = 0x02; + + byte[] testdata2 = new byte[ LittleEndian.SHORT_SIZE + 1 ]; + + testdata2[ 0 ] = 0x0D; + testdata2[ 1 ] = ( byte )0x93; + testdata2[ 2 ] = ( byte )0xFF; + + int expected[] = new int[ 4 ]; + + expected[ 0 ] = 0xFF01; + expected[ 1 ] = 0x02FF; + expected[ 2 ] = 0x930D; + expected[ 3 ] = 0xFF93; + assertEquals(expected[ 0 ], LittleEndian.getUShort(testdata)); + assertEquals(expected[ 1 ], LittleEndian.getUShort(testdata, 1)); + assertEquals(expected[ 2 ], LittleEndian.getUShort(testdata2)); + assertEquals(expected[ 3 ], LittleEndian.getUShort(testdata2, 1)); + + byte[] testdata3 = new byte[ LittleEndian.SHORT_SIZE + 1 ]; + LittleEndian.putShort(testdata3, 0, ( short ) expected[2] ); + LittleEndian.putShort(testdata3, 1, ( short ) expected[3] ); + assertEquals(testdata3[ 0 ], 0x0D); + assertEquals(testdata3[ 1 ], (byte)0x93); + assertEquals(testdata3[ 2 ], (byte)0xFF); + assertEquals(expected[ 2 ], LittleEndian.getUShort(testdata3)); + assertEquals(expected[ 3 ], LittleEndian.getUShort(testdata3, 1)); + //System.out.println("TD[1][0]: "+LittleEndian.getUShort(testdata)+" expecting 65281"); + //System.out.println("TD[1][1]: "+LittleEndian.getUShort(testdata, 1)+" expecting 767"); + //System.out.println("TD[2][0]: "+LittleEndian.getUShort(testdata2)+" expecting 37645"); + //System.out.println("TD[2][1]: "+LittleEndian.getUShort(testdata2, 1)+" expecting 65427"); + //System.out.println("TD[3][0]: "+LittleEndian.getUShort(testdata3)+" expecting 37645"); + //System.out.println("TD[3][1]: "+LittleEndian.getUShort(testdata3, 1)+" expecting 65427"); + + } + private static final byte[] _double_array = { 56, 50, -113, -4, -63, -64, -13, 63, 76, -32, -42, -35, 60, -43, 3, 64