From 8a8bf7d3933c9431a255addf9ab46d8bab018338 Mon Sep 17 00:00:00 2001 From: Evgeniy Berlog Date: Sat, 8 Sep 2012 18:35:04 +0000 Subject: [PATCH] fixed bug 53588 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1382339 13f79535-47bb-0310-9956-ffa450edef68 --- .../MissingRecordAwareHSSFListener.java | 15 ++++++--------- .../TestMissingRecordAwareHSSFListener.java | 18 ++++++++++++++++++ test-data/spreadsheet/53588.xls | Bin 0 -> 15360 bytes 3 files changed, 24 insertions(+), 9 deletions(-) create mode 100644 test-data/spreadsheet/53588.xls diff --git a/src/java/org/apache/poi/hssf/eventusermodel/MissingRecordAwareHSSFListener.java b/src/java/org/apache/poi/hssf/eventusermodel/MissingRecordAwareHSSFListener.java index 7e5007a657..15206bd218 100644 --- a/src/java/org/apache/poi/hssf/eventusermodel/MissingRecordAwareHSSFListener.java +++ b/src/java/org/apache/poi/hssf/eventusermodel/MissingRecordAwareHSSFListener.java @@ -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.*; /** *

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; diff --git a/src/testcases/org/apache/poi/hssf/eventusermodel/TestMissingRecordAwareHSSFListener.java b/src/testcases/org/apache/poi/hssf/eventusermodel/TestMissingRecordAwareHSSFListener.java index e632cbbbb1..6a60f94546 100644 --- a/src/testcases/org/apache/poi/hssf/eventusermodel/TestMissingRecordAwareHSSFListener.java +++ b/src/testcases/org/apache/poi/hssf/eventusermodel/TestMissingRecordAwareHSSFListener.java @@ -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 index 0000000000000000000000000000000000000000..716305b544e43004df4215f435909318cc212352 GIT binary patch literal 15360 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 Yq*{1s^%DAU>9KEk>+Y*JpRWe~4XckPRR910 literal 0 HcmV?d00001 -- 2.39.5