在Java中比较数据透视表

时间:2017-06-28 13:31:16

标签: java excel pivot-table

我有一个Excel文件。在第一部分中,我有一堆不同的部分及其相应的权重以及它们的部分类别。在第二部分中,我有同样的事情,但权重可能已经改变。我试图找出两张纸之间每个类别总重量的差异。为此,我制作了两个数据透视表对象,按部件类别对权重进行分组。现在我想找出权重的差异。有没有办法索引数据透视表对象,以便我可以遍历数据透视表并计算差异?我无法找到有关此问题的任何文档。

        FileInputStream input_document = new FileInputStream(new File("C:\\Tests\\Demo Data.xlsx"));   
        XSSFWorkbook workbook = new XSSFWorkbook(input_document); 
        XSSFSheet sheet = workbook.getSheetAt(0); 
        XSSFSheet sheetTwo = workbook.getSheetAt(1);
        AreaReference a = new AreaReference("A1:F2376");
        CellReference b = new CellReference("I1");
        AreaReference c = new AreaReference("A1:F2376");
        CellReference d = new CellReference("I1");
        XSSFPivotTable pivotTable = sheet.createPivotTable(a, b);
        pivotTable.addRowLabel(0);
        pivotTable.addRowLabel(1);
        pivotTable.addColumnLabel(DataConsolidateFunction.SUM, 5);
        XSSFPivotTable legacyPivot = sheetTwo.createPivotTable(c, d);
        legacyPivot.addRowLabel(0);
        legacyPivot.addRowLabel(1);
        legacyPivot.addColumnLabel(DataConsolidateFunction.SUM, 5);

        FileOutputStream output_file = new FileOutputStream("C:\\Tests\\Demo Data.xlsx"); 
        workbook.write(output_file);


        ArrayList<Double> values = new ArrayList<Double>();
        for(Row r : sheet) {
           Cell cell = r.getCell(9);
           if(cell != null) {
              if(cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
                  System.out.println(cell.getNumericCellValue());
                 values.add(cell.getNumericCellValue());
              } else if(cell.getCellType() == Cell.CELL_TYPE_FORMULA && cell.getCachedFormulaResultType() == Cell.CELL_TYPE_NUMERIC) {
                  System.out.println(cell.getNumericCellValue());
                  values.add(cell.getNumericCellValue());
              }
           }
        }

以上就是我的尝试。我以为我可以将列值存储在两个数据透视表的列表中,然后遍历列表并计算差异。但是,当我尝试使用第一个数据透视表时,我得到一个空白列表的输出。

0 个答案:

没有答案