]> source.dussan.org Git - poi.git/commitdiff
Patch from Kamil Linek from bug #57071 - 3+ XSSF column label names for pivot tables
authorNick Burch <nick@apache.org>
Sun, 21 Dec 2014 06:20:06 +0000 (06:20 +0000)
committerNick Burch <nick@apache.org>
Sun, 21 Dec 2014 06:20:06 +0000 (06:20 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1647088 13f79535-47bb-0310-9956-ffa450edef68

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

index 465d1feec6d0db4bd8f72aabc41027daa4f2560c..07bfb77bcdf8a7912420be7009ea3089f0ba65c1 100644 (file)
@@ -296,8 +296,8 @@ public class XSSFPivotTable extends POIXMLDocumentPart {
         addDataColumn(columnIndex, true);
         addDataField(function, columnIndex, valueFieldName);
 
-        //Only add colfield if there is already one.
-        if (pivotTableDefinition.getDataFields().getCount() > 1) {
+        // colfield should be added for the second one.
+        if (pivotTableDefinition.getDataFields().getCount() == 2) {
             CTColFields colFields;
             if(pivotTableDefinition.getColFields() != null) {
                 colFields = pivotTableDefinition.getColFields();
index b7aabfc8c0d4a32ed1020ffe8882be73d1c9b6cc..861984fd57e63094886007b10c189eb3334acb1a 100644 (file)
@@ -46,6 +46,8 @@ public class TestXSSFPivotTable extends TestCase {
         cell2.setCellValue("#");
         Cell cell7 = row1.createCell(2);
         cell7.setCellValue("Data");
+        Cell cell10 = row1.createCell(3);
+        cell10.setCellValue("Value");
 
         Row row2 = sheet.createRow(1);
         Cell cell3 = row2.createCell(0);
@@ -54,6 +56,8 @@ public class TestXSSFPivotTable extends TestCase {
         cell4.setCellValue(10);
         Cell cell8 = row2.createCell(2);
         cell8.setCellValue("Apa");
+        Cell cell11 = row1.createCell(3);
+        cell11.setCellValue(11.11);
 
         Row row3 = sheet.createRow(2);
         Cell cell5 = row3.createCell(0);
@@ -62,8 +66,10 @@ public class TestXSSFPivotTable extends TestCase {
         cell6.setCellValue(9);
         Cell cell9 = row3.createCell(2);
         cell9.setCellValue("Bepa");
+        Cell cell12 = row1.createCell(3);
+        cell12.setCellValue(12.12);
 
-        AreaReference source = new AreaReference("A1:B2");
+        AreaReference source = new AreaReference("A1:C2");
         pivotTable = sheet.createPivotTable(source, new CellReference("H5"));
     }
 
@@ -116,6 +122,39 @@ public class TestXSSFPivotTable extends TestCase {
         assertEquals(defintion.getColFields(), null);
     }
 
+    /**
+     * Verify that it's possible to create three column labels with different DataConsolidateFunction
+     */
+    public void testAddThreeDifferentColumnLabelsToPivotTable() {
+        int columnOne = 0;
+        int columnTwo = 1;
+        int columnThree = 2;
+
+        pivotTable.addColumnLabel(DataConsolidateFunction.SUM, columnOne);
+        pivotTable.addColumnLabel(DataConsolidateFunction.MAX, columnTwo);
+        pivotTable.addColumnLabel(DataConsolidateFunction.MIN, columnThree);
+        CTPivotTableDefinition defintion = pivotTable.getCTPivotTableDefinition();
+
+        assertEquals(defintion.getDataFields().getDataFieldList().size(), 3);
+    }
+    
+    
+    /**
+     * Verify that it's possible to create three column labels with the same DataConsolidateFunction
+     */
+    public void testAddThreeSametColumnLabelsToPivotTable() {
+        int columnOne = 0;
+        int columnTwo = 1;
+        int columnThree = 2;
+
+        pivotTable.addColumnLabel(DataConsolidateFunction.SUM, columnOne);
+        pivotTable.addColumnLabel(DataConsolidateFunction.SUM, columnTwo);
+        pivotTable.addColumnLabel(DataConsolidateFunction.SUM, columnThree);
+        CTPivotTableDefinition defintion = pivotTable.getCTPivotTableDefinition();
+
+        assertEquals(defintion.getDataFields().getDataFieldList().size(), 3);
+    }
+    
     /**
      * Verify that when creating two column labels, a col field is being created and X is set to -2.
      */