]> source.dussan.org Git - poi.git/commitdiff
Patch from Kamil Linek from bug #57063 - XSSF custom column label names for pivot...
authorNick Burch <nick@apache.org>
Sun, 21 Dec 2014 06:12:20 +0000 (06:12 +0000)
committerNick Burch <nick@apache.org>
Sun, 21 Dec 2014 06:12:20 +0000 (06:12 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1647087 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 278e66e3d31266567dad4a3051dbc92e488089b1..465d1feec6d0db4bd8f72aabc41027daa4f2560c 100644 (file)
@@ -275,16 +275,17 @@ public class XSSFPivotTable extends POIXMLDocumentPart {
             return Collections.emptyList();
         }
     }
-
+    
     /**
      * Add a column label using data from the given column and specified function
      * @param columnIndex the index of the column to be used as column label.
      * @param function the function to be used on the data
      * The following functions exists:
      * Sum, Count, Average, Max, Min, Product, Count numbers, StdDev, StdDevp, Var, Varp
+     * @param valueFieldName the name of pivot table value field
      */
     @Beta
-    public void addColumnLabel(DataConsolidateFunction function, int columnIndex) {
+    public void addColumnLabel(DataConsolidateFunction function, int columnIndex, String valueFieldName) {
         AreaReference pivotArea = getPivotArea();
         int lastColIndex = pivotArea.getLastCell().getCol() - pivotArea.getFirstCell().getCol();
 
@@ -293,7 +294,7 @@ public class XSSFPivotTable extends POIXMLDocumentPart {
         }
 
         addDataColumn(columnIndex, true);
-        addDataField(function, columnIndex);
+        addDataField(function, columnIndex, valueFieldName);
 
         //Only add colfield if there is already one.
         if (pivotTableDefinition.getDataFields().getCount() > 1) {
@@ -308,15 +309,28 @@ public class XSSFPivotTable extends POIXMLDocumentPart {
         }
     }
 
+    /**
+     * Add a column label using data from the given column and specified function
+     * @param columnIndex the index of the column to be used as column label.
+     * @param function the function to be used on the data
+     * The following functions exists:
+     * Sum, Count, Average, Max, Min, Product, Count numbers, StdDev, StdDevp, Var, Varp
+     */
+    @Beta
+    public void addColumnLabel(DataConsolidateFunction function, int columnIndex) {
+        addColumnLabel(function, columnIndex, function.getName());
+    }
+
     /**
      * Add data field with data from the given column and specified function.
      * @param function the function to be used on the data
      * @param index the index of the column to be used as column label.
      * The following functions exists:
      * Sum, Count, Average, Max, Min, Product, Count numbers, StdDev, StdDevp, Var, Varp
+     * @param valueFieldName the name of pivot table value field
      */
     @Beta
-    private void addDataField(DataConsolidateFunction function, int columnIndex) {
+    private void addDataField(DataConsolidateFunction function, int columnIndex, String valueFieldName) {
         AreaReference pivotArea = getPivotArea();
         int lastColIndex = pivotArea.getLastCell().getCol() - pivotArea.getFirstCell().getCol();
 
@@ -333,7 +347,7 @@ public class XSSFPivotTable extends POIXMLDocumentPart {
         dataField.setSubtotal(STDataConsolidateFunction.Enum.forInt(function.getValue()));
         Cell cell = getDataSheet().getRow(pivotArea.getFirstCell().getRow()).getCell(columnIndex);
         cell.setCellType(Cell.CELL_TYPE_STRING);
-        dataField.setName(function.getName());
+        dataField.setName(valueFieldName);
         dataField.setFld(columnIndex);
         dataFields.setCount(dataFields.sizeOfDataFieldArray());
     }
index 9eb164eaa96208803abcdef8cf6cee3a88533711..b7aabfc8c0d4a32ed1020ffe8882be73d1c9b6cc 100644 (file)
@@ -144,6 +144,22 @@ public class TestXSSFPivotTable extends TestCase {
         assertEquals(defintion.getDataFields().getDataFieldArray(0).getSubtotal(),
                 STDataConsolidateFunction.Enum.forInt(DataConsolidateFunction.SUM.getValue()));
     }
+    
+    /**
+     * Verify that it's possible to set a custom name when creating a data column
+     */
+    public void testColumnLabelSetCustomName() {
+        int columnIndex = 0;
+
+        String customName = "Custom Name";
+        
+        pivotTable.addColumnLabel(DataConsolidateFunction.SUM, columnIndex, customName);
+
+        CTPivotTableDefinition defintion = pivotTable.getCTPivotTableDefinition();
+
+        assertEquals(defintion.getDataFields().getDataFieldArray(0).getFld(), columnIndex);
+        assertEquals(defintion.getDataFields().getDataFieldArray(0).getName(), customName);
+    }
 
     /**
      * Verify that it's not possible to create a column label outside of the referenced area.