]> source.dussan.org Git - poi.git/commitdiff
sheet names are case insensitive
authorJaven O'Neal <onealj@apache.org>
Wed, 14 Sep 2016 22:43:08 +0000 (22:43 +0000)
committerJaven O'Neal <onealj@apache.org>
Wed, 14 Sep 2016 22:43:08 +0000 (22:43 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1760814 13f79535-47bb-0310-9956-ffa450edef68

src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPivotTable.java

index 98711c9dda36e44ec5be6dd68def513fe9807bcf..d72dca445e5e4eabb363b2447ba9d18d59e36779 100644 (file)
@@ -4165,9 +4165,9 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
      * @return The pivot table
      */
     @Beta
-    public XSSFPivotTable createPivotTable(AreaReference source, CellReference position, Sheet sourceSheet){
-
-        if(source.getFirstCell().getSheetName() != null && !source.getFirstCell().getSheetName().equals(sourceSheet.getSheetName())) {
+    public XSSFPivotTable createPivotTable(AreaReference source, CellReference position, Sheet sourceSheet) {
+        final String sourceSheetName = source.getFirstCell().getSheetName();
+        if(sourceSheetName != null && !sourceSheetName.equalsIgnoreCase(sourceSheet.getSheetName())) {
             throw new IllegalArgumentException("The area is referenced in another sheet than the "
                     + "defined source sheet " + sourceSheet.getSheetName() + ".");
         }
@@ -4193,8 +4193,10 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet {
      */
     @Beta
     public XSSFPivotTable createPivotTable(AreaReference source, CellReference position){
-        if(source.getFirstCell().getSheetName() != null && !source.getFirstCell().getSheetName().equals(this.getSheetName())) {
-            return createPivotTable(source, position, getWorkbook().getSheet(source.getFirstCell().getSheetName()));
+        final String sourceSheetName = source.getFirstCell().getSheetName();
+        if(sourceSheetName != null && !sourceSheetName.equalsIgnoreCase(this.getSheetName())) {
+            final XSSFSheet sourceSheet = getWorkbook().getSheet(sourceSheetName);
+            return createPivotTable(source, position, sourceSheet);
         }
         return createPivotTable(source, position, this);
     }
index 3248f2e1e4b5a3b8f20c190af5f7ac08f94d0ebf..851ca33d627fa58a8bfd2dff04a9973acc35122c 100644 (file)
 package org.apache.poi.xssf.usermodel;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.fail;
 
 import java.io.IOException;
 
-import org.apache.poi.ss.SpreadsheetVersion;
 import org.apache.poi.ss.usermodel.Cell;
 import org.apache.poi.ss.usermodel.CellType;
 import org.apache.poi.ss.usermodel.DataConsolidateFunction;
@@ -350,4 +350,21 @@ public class TestXSSFPivotTable {
         
         offsetPivotTable.addColumnLabel(DataConsolidateFunction.SUM, 0);
     }
+    
+    @Test
+    public void testPivotTableSheetNamesAreCaseInsensitive() {
+        wb.setSheetName(0,  "original");
+        wb.setSheetName(1,  "offset");
+        XSSFSheet original = wb.getSheet("OriginaL");
+        XSSFSheet offset = wb.getSheet("OffseT");
+        // assume sheets are accessible via case-insensitive name
+        assertNotNull(original);
+        assertNotNull(offset);
+        
+        AreaReference source = new AreaReference("ORIGinal!A1:C2", _testDataProvider.getSpreadsheetVersion());
+        // create a pivot table on the same sheet, case insensitive
+        original.createPivotTable(source, new CellReference("W1"));
+        // create a pivot table on a different sheet, case insensitive
+        offset.createPivotTable(source, new CellReference("W1"));
+    }
 }