From 3a72ec0aececf7a6fd640f852419b690c0b73244 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Sun, 21 Dec 2014 06:20:06 +0000 Subject: [PATCH] Patch from Kamil Linek from bug #57071 - 3+ XSSF column label names for pivot tables git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1647088 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/xssf/usermodel/XSSFPivotTable.java | 4 +- .../xssf/usermodel/TestXSSFPivotTable.java | 41 ++++++++++++++++++- 2 files changed, 42 insertions(+), 3 deletions(-) diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFPivotTable.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFPivotTable.java index 465d1feec..07bfb77bc 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFPivotTable.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFPivotTable.java @@ -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(); diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPivotTable.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPivotTable.java index b7aabfc8c..861984fd5 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPivotTable.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPivotTable.java @@ -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. */