我有一个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());
}
}
}
以上就是我的尝试。我以为我可以将列值存储在两个数据透视表的列表中,然后遍历列表并计算差异。但是,当我尝试使用第一个数据透视表时,我得到一个空白列表的输出。