From b98b01b29b0168b09bab225e8b93067ae3e89ebd Mon Sep 17 00:00:00 2001 From: Yegor Kozlov Date: Thu, 19 Aug 2010 18:08:54 +0000 Subject: [PATCH] fixed fetching names of user defined styles, see Bugzila 49751 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@987256 13f79535-47bb-0310-9956-ffa450edef68 --- src/documentation/content/xdocs/status.xml | 1 + .../poi/hssf/model/InternalWorkbook.java | 2 +- .../apache/poi/hssf/usermodel/TestBugs.java | 28 ++++++++++++++++-- test-data/spreadsheet/49751.xls | Bin 0 -> 19456 bytes 4 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 test-data/spreadsheet/49751.xls diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml index ad5baeebdd..67f61e1615 100644 --- a/src/documentation/content/xdocs/status.xml +++ b/src/documentation/content/xdocs/status.xml @@ -34,6 +34,7 @@ + 49751 - fixed fetching names of user defined styles in HSSFCellStyle.getUserStyleName() 48900 - support for protecting a XSSF workbook 49725 - fixed FormulaParser to correctly process defined names with underscore 48526 - added implementation for RANDBETWEEN() diff --git a/src/java/org/apache/poi/hssf/model/InternalWorkbook.java b/src/java/org/apache/poi/hssf/model/InternalWorkbook.java index f2719bba5e..1ac6a2a375 100644 --- a/src/java/org/apache/poi/hssf/model/InternalWorkbook.java +++ b/src/java/org/apache/poi/hssf/model/InternalWorkbook.java @@ -871,7 +871,7 @@ public final class InternalWorkbook { continue; } if(!(r instanceof StyleRecord)) { - return null; + continue; } StyleRecord sr = (StyleRecord)r; if(sr.getXFIndex() == xfIndex) { diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java b/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java index 7d8c27a6f4..293e237b0e 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java @@ -22,9 +22,7 @@ import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; -import java.util.Arrays; -import java.util.Iterator; -import java.util.List; +import java.util.*; import junit.framework.AssertionFailedError; @@ -1837,4 +1835,28 @@ if(1==2) { assertEquals("Testing 2", wb.getCellStyleAt((short)22).getUserStyleName()); assertEquals("Testing 3", wb.getCellStyleAt((short)23).getUserStyleName()); } + + public void test49751() { + HSSFWorkbook wb = openSample("49751.xls"); + short numCellStyles = wb.getNumCellStyles(); + List namedStyles = Arrays.asList( + "20% - Accent1", "20% - Accent2", "20% - Accent3", "20% - Accent4", "20% - Accent5", + "20% - Accent6", "40% - Accent1", "40% - Accent2", "40% - Accent3", "40% - Accent4", + "40% - Accent5", "40% - Accent6", "60% - Accent1", "60% - Accent2", "60% - Accent3", + "60% - Accent4", "60% - Accent5", "60% - Accent6", "Accent1", "Accent2", "Accent3", + "Accent4", "Accent5", "Accent6", "Bad", "Calculation", "Check Cell", "Explanatory Text", + "Good", "Heading 1", "Heading 2", "Heading 3", "Heading 4", "Input", "Linked Cell", + "Neutral", "Note", "Output", "Title", "Total", "Warning Text"); + + List collecteddStyles = new ArrayList(); + for (short i = 0; i < numCellStyles; i++) { + HSSFCellStyle cellStyle = wb.getCellStyleAt(i); + String styleName = cellStyle.getUserStyleName(); + if (styleName != null) { + collecteddStyles.add(styleName); + } + } + assertTrue(namedStyles.containsAll(collecteddStyles)); + + } } diff --git a/test-data/spreadsheet/49751.xls b/test-data/spreadsheet/49751.xls new file mode 100644 index 0000000000000000000000000000000000000000..09eaede14034ef8abc41964ea6797c956a818b2d GIT binary patch literal 19456 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 I|H~HmFF)#yG5`Po literal 0 HcmV?d00001 -- 2.39.5