]> source.dussan.org Git - poi.git/commitdiff
Bug 61528 - Pivot Table enhancements, new example [Thanks to R Kietel]. This closes #71
authorPJ Fanning <fanningpj@apache.org>
Tue, 19 Sep 2017 21:21:37 +0000 (21:21 +0000)
committerPJ Fanning <fanningpj@apache.org>
Tue, 19 Sep 2017 21:21:37 +0000 (21:21 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1808946 13f79535-47bb-0310-9956-ffa450edef68

src/examples/src/org/apache/poi/xssf/usermodel/examples/CreatePivotTable2.java [new file with mode: 0644]

diff --git a/src/examples/src/org/apache/poi/xssf/usermodel/examples/CreatePivotTable2.java b/src/examples/src/org/apache/poi/xssf/usermodel/examples/CreatePivotTable2.java
new file mode 100644 (file)
index 0000000..316b8f8
--- /dev/null
@@ -0,0 +1,124 @@
+/* ====================================================================
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ ==================================================================== */
+package org.apache.poi.xssf.usermodel.examples;
+
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.Date;
+import java.util.Calendar;
+
+import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
+import org.apache.poi.ss.SpreadsheetVersion;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.CellStyle;
+import org.apache.poi.ss.usermodel.DataConsolidateFunction;
+import org.apache.poi.ss.usermodel.DataFormat;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.util.AreaReference;
+import org.apache.poi.ss.util.CellReference;
+import org.apache.poi.xssf.usermodel.XSSFPivotTable;
+import org.apache.poi.xssf.usermodel.XSSFSheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+
+public class CreatePivotTable2 {
+
+    public static void main(String[] args) throws FileNotFoundException, IOException, InvalidFormatException {
+        XSSFWorkbook wb = new XSSFWorkbook();
+        XSSFSheet sheet = wb.createSheet();
+
+        //Create some data to build the pivot table on
+        setCellData(sheet);
+
+        AreaReference source = new AreaReference("A1:E7", SpreadsheetVersion.EXCEL2007);
+        CellReference position = new CellReference("H1");
+        // Create a pivot table on this sheet, with H1 as the top-left cell..
+        // The pivot table's data source is on the same sheet in A1:E7
+        XSSFPivotTable pivotTable = sheet.createPivotTable(source, position);
+        //Configure the pivot table
+        //Use first column as row label
+        pivotTable.addRowLabel(0);
+        //Sum up the second column with column title and data format
+        pivotTable.addColumnLabel(DataConsolidateFunction.SUM, 1, "Values", "#,##0.00");
+        //Use third column (month) as columns (side by side)
+        pivotTable.addColLabel(3, "DD.MM.YYYY");
+
+        //Add filter on forth column
+        pivotTable.addReportFilter(4);
+
+        FileOutputStream fileOut = new FileOutputStream("ooxml-pivottable2.xlsx");
+        wb.write(fileOut);
+        fileOut.close();
+        wb.close();
+    }
+
+    public static void setCellData(XSSFSheet sheet){
+        Calendar cal1 = Calendar.getInstance();
+        cal1.set(2017, 0, 1, 0, 0, 0);
+        Calendar cal2 = Calendar.getInstance();
+        cal2.set(2017, 1, 1, 0, 0, 0);
+        Row row1 = sheet.createRow(0);
+        // Create a cell and put a value in it.
+        // first row are column titles
+        Cell cell11 = row1.createCell(0);
+        cell11.setCellValue("Names");
+        Cell cell12 = row1.createCell(1);
+        cell12.setCellValue("Values");
+        Cell cell13 = row1.createCell(2);
+        cell13.setCellValue("%");
+        Cell cell14 = row1.createCell(3);
+        cell14.setCellValue("Month");
+        Cell cell15 = row1.createCell(4);
+        cell15.setCellValue("No");
+
+        CellStyle csDbl = sheet.getWorkbook().createCellStyle();
+        DataFormat dfDbl = sheet.getWorkbook().createDataFormat();
+        csDbl.setDataFormat(dfDbl.getFormat("#,##0.00"));
+
+        CellStyle csDt = sheet.getWorkbook().createCellStyle();
+        DataFormat dfDt = sheet.getWorkbook().createDataFormat();
+        csDt.setDataFormat(dfDt.getFormat("dd/MM/yyyy"));
+        // data
+        setDataRow(sheet, 1, "Jane", 1120.5, 100, cal1.getTime(), 1, csDbl, csDt);
+        setDataRow(sheet, 2, "Jane", 1453.2, 95, cal2.getTime(), 2, csDbl, csDt);
+
+        setDataRow(sheet, 3, "Tarzan", 1869.8, 88, cal1.getTime(), 1, csDbl, csDt);
+        setDataRow(sheet, 4, "Tarzan", 1536.2, 92, cal2.getTime(), 2, csDbl, csDt);
+
+        setDataRow(sheet, 5, "Terk", 1624.1, 75, cal1.getTime(), 1, csDbl, csDt);
+        setDataRow(sheet, 6, "Terk", 1569.3, 82, cal2.getTime(), 2, csDbl, csDt);
+        sheet.autoSizeColumn(3);
+    }
+
+    public static void setDataRow(XSSFSheet sheet, int rowNum, String name, double v1, int v2, Date dt, int no, CellStyle csDbl, CellStyle csDt){
+        Row row = sheet.createRow(rowNum);
+        // set the values for one row
+        Cell c1 = row.createCell(0);
+        c1.setCellValue(name);
+        Cell c2 = row.createCell(1);
+        c2.setCellValue(v1);
+        c2.setCellStyle(csDbl);
+        Cell c3 = row.createCell(2);
+        c3.setCellValue(v2);
+        Cell c4 = row.createCell(3);
+        c4.setCellValue(dt);
+        c4.setCellStyle(csDt);
+        Cell c5 = row.createCell(4);
+        c5.setCellValue(no);
+    }
+
+}