From 685af351d1bfc2912584de1af4cc5eab4fe6b87c Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Fri, 1 Jan 2021 15:51:19 +0000 Subject: Bug 64750: Do not use CTDataValidations.getCount(), instead only rely on getDataValidationArray Field "count" seems to be optional according to the schema, so by using only the array Apache POI can read data validations from workbooks that do not populate the "count" field properly. git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1885011 13f79535-47bb-0310-9956-ffa450edef68 --- src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java | 4 ++-- .../testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java index 6f8613afa6..abaca3a5cf 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java @@ -80,7 +80,6 @@ import org.apache.poi.util.Beta; import org.apache.poi.util.Internal; import org.apache.poi.util.POILogFactory; import org.apache.poi.util.POILogger; -import org.apache.poi.util.Removal; import org.apache.poi.util.Units; import org.apache.poi.xssf.model.CommentsTable; import org.apache.poi.xssf.usermodel.XSSFPivotTable.PivotTableReferenceConfigurator; @@ -4011,7 +4010,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { public List getDataValidations() { List xssfValidations = new ArrayList<>(); CTDataValidations dataValidations = this.worksheet.getDataValidations(); - if( dataValidations!=null && dataValidations.getCount() > 0 ) { + if (dataValidations != null) { for (CTDataValidation ctDataValidation : dataValidations.getDataValidationArray()) { CellRangeAddressList addressList = new CellRangeAddressList(); @@ -4031,6 +4030,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { xssfValidations.add(xssfDataValidation); } } + return xssfValidations; } diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java index 5476e28688..7c2fed7a83 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java @@ -3661,4 +3661,12 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { assertEquals(CellType.NUMERIC, value.getCellType()); assertEquals(1, value.getNumberValue(), 0.01); } + + @Test + public void test64750() throws IOException { + try (Workbook wb = XSSFTestDataSamples.openSampleWorkbook("64750.xlsx")) { + Sheet sheet = wb.getSheet("Sheet1"); + assertEquals(1, sheet.getDataValidations().size()); + } + } } -- cgit v1.2.3