]> source.dussan.org Git - poi.git/commitdiff
fixed bug 53588
authorEvgeniy Berlog <berlog@apache.org>
Sat, 8 Sep 2012 18:35:04 +0000 (18:35 +0000)
committerEvgeniy Berlog <berlog@apache.org>
Sat, 8 Sep 2012 18:35:04 +0000 (18:35 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1382339 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/poi/hssf/eventusermodel/MissingRecordAwareHSSFListener.java
src/testcases/org/apache/poi/hssf/eventusermodel/TestMissingRecordAwareHSSFListener.java
test-data/spreadsheet/53588.xls [new file with mode: 0644]

index 7e5007a6575ff45c78e2aff3f32931feda03bae0..15206bd21866ee20cf8a41b6b47f1612d80ed354 100644 (file)
@@ -20,15 +20,7 @@ package org.apache.poi.hssf.eventusermodel;
 import org.apache.poi.hssf.eventusermodel.dummyrecord.LastCellOfRowDummyRecord;
 import org.apache.poi.hssf.eventusermodel.dummyrecord.MissingCellDummyRecord;
 import org.apache.poi.hssf.eventusermodel.dummyrecord.MissingRowDummyRecord;
-import org.apache.poi.hssf.record.BOFRecord;
-import org.apache.poi.hssf.record.CellValueRecordInterface;
-import org.apache.poi.hssf.record.MulBlankRecord;
-import org.apache.poi.hssf.record.MulRKRecord;
-import org.apache.poi.hssf.record.NoteRecord;
-import org.apache.poi.hssf.record.Record;
-import org.apache.poi.hssf.record.RecordFactory;
-import org.apache.poi.hssf.record.RowRecord;
-import org.apache.poi.hssf.record.SharedFormulaRecord;
+import org.apache.poi.hssf.record.*;
 
 /**
  * <p>A HSSFListener which tracks rows and columns, and will
@@ -72,6 +64,11 @@ public final class MissingRecordAwareHSSFListener implements HSSFListener {
                        thisRow = valueRec.getRow();
                        thisColumn = valueRec.getColumn();
                } else {
+            if (record instanceof StringRecord){
+                //it contains only cashed result of the previous FormulaRecord evaluation
+                childListener.processRecord(record);
+                return;
+            }
                        thisRow = -1;
                        thisColumn = -1;
 
index e632cbbbb1091107802b5b1889593c029de1e39d..6a60f9454674bcdb8c6fb81dfa7a9fd48f2cd185 100644 (file)
@@ -461,4 +461,22 @@ public final class TestMissingRecordAwareHSSFListener extends TestCase {
                }
                assertEquals(2, eorCount);
        }
+
+    public void testStringRecordHandling(){
+        readRecords("53588.xls");
+        Record[] rr = r;
+        int missingCount=0;
+        int lastCount=0;
+        for (int i = 0; i < rr.length; i++) {
+            Record record = rr[i];
+            if (record instanceof MissingCellDummyRecord) {
+                missingCount++;
+            }
+            if (record instanceof LastCellOfRowDummyRecord) {
+                lastCount++;
+            }
+        }
+        assertEquals(1, missingCount);
+        assertEquals(1, lastCount);
+    }
 }
diff --git a/test-data/spreadsheet/53588.xls b/test-data/spreadsheet/53588.xls
new file mode 100644 (file)
index 0000000..716305b
Binary files /dev/null and b/test-data/spreadsheet/53588.xls differ