]> source.dussan.org Git - poi.git/commitdiff
Fix indent, add more documentation, and make the error message more helpful
authorNick Burch <nick@apache.org>
Mon, 3 Mar 2008 17:47:36 +0000 (17:47 +0000)
committerNick Burch <nick@apache.org>
Mon, 3 Mar 2008 17:47:36 +0000 (17:47 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@633205 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/poi/hssf/record/formula/ArrayPtg.java

index 372b1850e4bf7127ccf56332181ea51dd15bda69..12166b7967ecc639f2baef58b896b019a42192d7 100644 (file)
@@ -72,8 +72,10 @@ public class ArrayPtg extends Ptg
        field_7_reserved = in.readByte();
     }
     
-    /** Read in the actual token (array) values. This occurs AFTER the last
-     * Ptg in the expression.
+    /** 
+     * Read in the actual token (array) values. This occurs 
+     * AFTER the last Ptg in the expression.
+     * See page 304-305 of Excel97-2007BinaryFileFormat(xls)Specification.pdf
      */
     public void readTokenValues(RecordInputStream in) {        
         token_1_columns = (short)(0x00ff & in.readByte());
@@ -88,18 +90,17 @@ public class ArrayPtg extends Ptg
         token_3_arrayValues = new Object[token_1_columns][token_2_rows];
         
         for (int x=0;x<token_1_columns;x++) {
-               for (int y=0;y<token_2_rows;y++) {
-                       byte grbit = in.readByte();
-                       if (grbit == 0x01) {
-                           token_3_arrayValues[x][y] = new Double(in.readDouble());
-                       } else if (grbit == 0x02) {
-                               //Ignore the doco, it is actually a unicode string with all the
-                               //trimmings ie 16 bit size, option byte etc
-                               token_3_arrayValues[x][y] = in.readUnicodeString();
-                       } else throw new RecordFormatException("Unknown grbit '"+grbit+"'");
-               }
+                       for (int y=0;y<token_2_rows;y++) {
+                               byte grbit = in.readByte();
+                               if (grbit == 0x01) {
+                                       token_3_arrayValues[x][y] = new Double(in.readDouble());
+                               } else if (grbit == 0x02) {
+                                       //Ignore the doco, it is actually a unicode string with all the
+                                       //trimmings ie 16 bit size, option byte etc
+                                       token_3_arrayValues[x][y] = in.readUnicodeString();
+                               } else throw new RecordFormatException("Unknown grbit '"+grbit+"' at " + x + "," + y + " with " + in.remaining() + " bytes left");
+                       }
         }
-
     }
 
     public String toString()