Java - Excel에서 피벗 테이블을 만드는 방법
29503 단어 pivottablejavaexcelapi
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 파일의 데이터를 기반으로 피벗 테이블을 만드는 단계입니다.
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);
Reference
이 문제에 관하여(Java - Excel에서 피벗 테이블을 만드는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/alexis92/java-how-to-create-pivot-tables-in-excel-10gl텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)