Java - Excel에서 피벗 테이블을 만드는 방법

29503 단어 pivottablejavaexcelapi
Excel 피벗 테이블을 사용하면 많은 양의 데이터를 간결한 표 형식으로 계산, 그룹화 및 요약할 수 있으므로 보다 쉽게 ​​보고하고 분석할 수 있습니다. Excel에서 가장 강력한 도구 중 하나인 이 도구는 사용자에게 여러 관점에서 정적 데이터를 볼 수 있는 기능을 제공합니다. 이 문서에서는 Spire.XLS for Java을 사용하여 Excel에서 Java로 피벗 테이블을 만드는 방법, 피벗 테이블 데이터를 정렬하는 방법 및 피벗 테이블에서 기타 설정을 수행하는 방법을 소개합니다.
  • Create a Pivot Table in Excel in Java
  • Sort Pivot Table by Column Values in Java
  • Expand or Collapse Rows in Pivot Table in Java
  • Preform Other Settings in Pivot Table

  • Spire.Xls jar를 종속성으로 추가



    Maven 프로젝트에서 작업하는 경우 다음을 사용하여 pom.xml 파일에 종속성을 포함할 수 있습니다.

    <repositories>
        <repository>
            <id>com.e-iceblue</id>
            <name>e-iceblue</name>
            <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
        </repository>
    </repositories>
    <dependencies>
        <dependency>
            <groupId>e-iceblue</groupId>
            <artifactId>spire.xls</artifactId>
            <version>12.8.4</version>
        </dependency>
    </dependencies>
    


    maven을 사용하지 않는 경우 this location 에서 제공되는 zip 파일에서 필요한 jar 파일을 찾을 수 있습니다. 이 자습서에 제공된 샘플 코드를 실행하려면 모든 jar 파일을 애플리케이션 lib 폴더에 포함합니다.

    Java에서 Excel로 피벗 테이블 만들기



    다음은 Java용 Spire.XLS를 사용하여 기존 Excel 파일의 데이터를 기반으로 피벗 테이블을 만드는 단계입니다.
  • 통합 문서 개체를 만듭니다.
  • Workbook.loadFromFile() 메서드를 사용하여 샘플 Excel 문서를 로드합니다.
  • Workbook.getWorksheets().get() 메서드를 사용하여 지정된 워크시트를 가져옵니다.
  • Worksheet.getRange().get() 메소드를 사용하여 데이터 소스 범위를 선택하고 Workbook.PivotCaches.add() 메소드를 사용하여 PivotCachesCollection에 범위를 추가하고 PivotCache의 객체를 반환합니다.
  • 워크시트에 피벗 테이블을 추가하고 Worksheet.getPivotTables().add() 메서드를 사용하여 피벗 테이블의 위치와 캐시를 설정합니다.
  • "지역"및 "제품"필드를 행 영역으로 드래그합니다.
  • 값 영역에 "수량"및 "금액"필드를 추가합니다.
  • Workbook.saveToFile() 메서드를 사용하여 결과 문서를 저장합니다.

  • import com.spire.xls.*;
    
    public class CreatePivotTable {
    
        public static void main(String[] args) {
    
            //Create a Workbook object
            Workbook workbook = new Workbook();
    
            //Load a sample Excel document
            workbook.loadFromFile("C:\\Users\\Administrator\\Desktop\\data.xlsx");
    
            //Get the first worksheet
            Worksheet sheet = workbook.getWorksheets().get(0);
    
            //Select the data source range
            CellRange dataRange = sheet.getRange().get("C1:F11");
            PivotCache cache = workbook.getPivotCaches().add(dataRange);
    
            //Add a PivotTable to the worksheet and set the location and cache of it
            PivotTable pt = sheet.getPivotTables().add("Pivot Table", sheet.getRange().get("H3"), cache);
    
            //Drag "Region" and "Product" fields to rows area
            PivotField regionField =(PivotField)pt.getPivotFields().get("Region");
            regionField.setAxis(AxisTypes.Row);
            pt.getOptions().setRowHeaderCaption("Region");
            PivotField productField = (PivotField)pt.getPivotFields().get("Product");
            productField.setAxis(AxisTypes.Row);
    
            //Add "Quantity" and "Amount" fields to values area
            pt.getDataFields().add(pt.getPivotFields().get("Quantity"), "SUM of Quantity", SubtotalTypes.Sum);
            pt.getDataFields().add(pt.getPivotFields().get("Amount"), "SUM of Amount", SubtotalTypes.Sum);
    
            //Apply a built-in style to the pivot table
            pt.setBuiltInStyle(PivotBuiltInStyles.PivotStyleMedium11);
    
            //Set column width
            sheet.setColumnWidth(8,16);
            sheet.setColumnWidth(9,16);
            sheet.setColumnWidth(10,16);
    
            //Save the document
            workbook.saveToFile("output/CreatePivotTable.xlsx", ExcelVersion.Version2016);
        }
    }
    




    Java의 열 값으로 피벗 테이블 정렬



    특정 필드는 PivotTable.getPivotFields().get() 메서드로 접근할 수 있으며 PivotField를 사용하여 정렬 유형을 설정할 수 있습니다. setSortType() 메소드. 다음 코드 예제는 "Region"필드의 열 값을 기준으로 피벗 테이블을 정렬하는 방법을 보여줍니다.

    import com.spire.xls.*;
    import com.spire.xls.core.IPivotDataField;
    
    public class SortPivotTableByRow {
    
        public static void main(String[] args) {
    
            //Create a Workbook object
            Workbook workbook = new Workbook();
    
            //Load a sample Excel document
            workbook.loadFromFile("C:\\Users\\Administrator\\Desktop\\data.xlsx");
    
            //Get the first worksheet
            Worksheet sheet = workbook.getWorksheets().get(0);
    
            //Select the data source range
            CellRange dataRange = sheet.getRange().get("A1:F11");
            PivotCache cache = workbook.getPivotCaches().add(dataRange);
    
            //Add a PivotTable to the worksheet and set the location and cache of it
            PivotTable pt = sheet.getPivotTables().add("Pivot Table", sheet.getRange().get("H3"), cache);
    
            //Drag "Region" , "Order ID" and "Product" fields to rows area
            PivotField regionField =(PivotField)pt.getPivotFields().get("Region");
            regionField.setAxis(AxisTypes.Row);
            pt.getOptions().setRowHeaderCaption("Region");
    
            PivotField idField = (PivotField)pt.getPivotFields().get("Order ID");
            idField.setAxis(AxisTypes.Row);
    
            PivotField productField = (PivotField)pt.getPivotFields().get("Product");
            productField.setAxis(AxisTypes.Row);
    
            //Add "Quantity" and "Amount" fields to values area
            pt.getDataFields().add(pt.getPivotFields().get("Quantity"), "SUM of Quantity", SubtotalTypes.Sum);
            pt.getDataFields().add(pt.getPivotFields().get("Amount"), "SUM of Amount", SubtotalTypes.Sum);
    
            //Apply a built-in style to the pivot table
            pt.setBuiltInStyle(PivotBuiltInStyles.PivotStyleMedium11);
    
            //Calculate data
            pt.calculateData();
    
            //Sort data in the column of "Order ID" field
            idField.setSortType(PivotFieldSortType.Descending);
    
            //Set column width
            sheet.setColumnWidth(8,16);
            sheet.setColumnWidth(9,16);
            sheet.setColumnWidth(10,16);
    
            //Save the document
            workbook.saveToFile("output/SortDataByRow.xlsx", ExcelVersion.Version2016);
        }
    }
    




    Java의 피벗 테이블에서 행 확장 또는 축소



    특정 피벗 필드 아래의 세부 정보를 축소하려면 PivotField.hideItemDetail(String, Boolean) 메서드를 사용하고 두 번째 매개 변수를 true로 설정합니다. 세부 정보를 표시하려면 동일한 메서드를 사용하고 두 번째 매개 변수를 false로 설정합니다.

    import com.spire.xls.*;
    
    public class CollapseRows {
    
        public static void main(String[] args) {
    
            //Create a Workbook object
            Workbook workbook = new Workbook();
    
            //Load a sample Excel document
            workbook.loadFromFile("C:\\Users\\Administrator\\Desktop\\data.xlsx");
    
            //Get the first worksheet
            Worksheet sheet = workbook.getWorksheets().get(0);
    
            //Select the data source range
            CellRange dataRange = sheet.getRange().get("C1:F11");
            PivotCache cache = workbook.getPivotCaches().add(dataRange);
    
            //Add a PivotTable to the worksheet and set the location and cache of it
            PivotTable pt = sheet.getPivotTables().add("Pivot Table", sheet.getRange().get("H3"), cache);
    
            //Drag "Region" and "Product" fields to rows area
            PivotField regionField =(PivotField)pt.getPivotFields().get("Region");
            regionField.setAxis(AxisTypes.Row);
            pt.getOptions().setRowHeaderCaption("Region");
            PivotField productField = (PivotField)pt.getPivotFields().get("Product");
            productField.setAxis(AxisTypes.Row);
    
            //Hide item details of the region field
            regionField.hideItemDetail("West",true);
            regionField.hideItemDetail("East",true);
    
            //Add "Quantity" and "Amount" fields to values area
            pt.getDataFields().add(pt.getPivotFields().get("Quantity"), "SUM of Quantity", SubtotalTypes.Sum);
            pt.getDataFields().add(pt.getPivotFields().get("Amount"), "SUM of Amount", SubtotalTypes.Sum);
    
            //Apply a built-in style to the pivot table
            pt.setBuiltInStyle(PivotBuiltInStyles.PivotStyleMedium11);
    
            //Calculate data
            pt.calculateData();
    
            //Set column width
            sheet.setColumnWidth(8,16);
            sheet.setColumnWidth(9,16);
            sheet.setColumnWidth(10,16);
    
            //Save the document
            workbook.saveToFile("output/CollapseRows.xlsx", ExcelVersion.Version2016);
        }
    }
    




    다른 설정



    피벗 이야기 새로 고침/데이터 소스 업데이트:PivotTable.getCache().isRefreshOnLoad(true);
    소계 표시 또는 표시:PivotTable.isShowSubtotals(true);
    데이터 소스 변경:PivotTable.changeDataSource();
    필터 추가:
    PivotReportFilter filter = new PivotReportFilter(String fieldName);
    PivotTable.getReportFilters().add(filter);

    좋은 웹페이지 즐겨찾기