피벗 테이블은 의미 있는 방식으로 데이터를 나타내기 위해 데이터를 재정렬합니다. 다양한 정렬 옵션을 제공하고 데이터를 함께 그룹화하여 합계, 평균 또는 기타 통계를 제공합니다. 데이터 분석을 위한 필수 도구이며 MS Excel의 기본 요소입니다. 프로그래밍 방식으로 피벗 테이블을 만들고 조작해야 하는 시나리오에 직면할 수 있습니다. 이를 위해 이 기사에서는 C++를 사용하여 Excel 파일에서 피벗 테이블을 사용하는 방법을 설명합니다.

Excel 파일에서 피벗 테이블 작업을 위한 C++ API

Aspose.Cells for C++는 Microsoft Excel을 설치하지 않고도 Excel 파일을 만들고 읽고 업데이트할 수 있는 네이티브 C++ 라이브러리입니다. API는 Excel 파일의 피벗 테이블 작업도 지원합니다. NuGet을 통해 API를 설치하거나 다운로드 섹션에서 직접 다운로드할 수 있습니다.

PM> Install-Package Aspose.Cells.Cpp

C++를 사용하여 Excel 파일에서 피벗 테이블 만들기

다음 예에서는 새 Excel 파일을 만들고 여기에 샘플 데이터를 삽입하고 피벗 테이블을 만듭니다. 이 예제에서 생성된 파일은 다른 예제의 소스 파일로 사용됩니다. 다음은 Excel 파일에서 피벗 테이블을 만드는 단계입니다.

다음 샘플 코드는 C++를 사용하여 Excel 파일에서 피벗 테이블을 만드는 방법을 보여줍니다.

// 소스 디렉토리 경로.
StringPtr srcDir = new String("SourceDirectory\\");

// 출력 디렉토리 경로.
StringPtr outDir = new String("OutputDirectory\\");

// IWorkbook 클래스의 인스턴스 만들기
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();

// 첫 번째 워크시트에 액세스
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// 피벗 테이블에 대한 소스 데이터 추가
intrusive_ptr<String> str = new String("Fruit");
worksheet->GetICells()->GetObjectByIndex(new String("A1"))->PutValue(str);
str = new String("Quantity");
worksheet->GetICells()->GetObjectByIndex(new String("B1"))->PutValue(str);
str = new String("Price");
worksheet->GetICells()->GetObjectByIndex(new String("C1"))->PutValue(str);
str = new String("Apple");
worksheet->GetICells()->GetObjectByIndex(new String("A2"))->PutValue(str);
str = new String("Orange");
worksheet->GetICells()->GetObjectByIndex(new String("A3"))->PutValue(str);
str = new String("Mango");
worksheet->GetICells()->GetObjectByIndex(new String("A4"))->PutValue(str);
worksheet->GetICells()->GetObjectByIndex(new String("B2"))->PutValue(3);
worksheet->GetICells()->GetObjectByIndex(new String("B3"))->PutValue(4);
worksheet->GetICells()->GetObjectByIndex(new String("B4"))->PutValue(4);
worksheet->GetICells()->GetObjectByIndex(new String("C2"))->PutValue(2);
worksheet->GetICells()->GetObjectByIndex(new String("C3"))->PutValue(1);
worksheet->GetICells()->GetObjectByIndex(new String("C4"))->PutValue(4);

// 피벗 테이블 추가
int idx = worksheet->GetIPivotTables()->Add(new String("A1:C4"), new String("E5"), new String("MyPivotTable"));

// 생성된 피벗 테이블에 액세스
intrusive_ptr<IPivotTable> pivotTable = worksheet->GetIPivotTables()->GetObjectByIndex(idx);

// 피벗 테이블 행, 열 및 데이터 필드 조작
pivotTable->AddFieldToArea(PivotFieldType_Row, pivotTable->GetIBaseFields()->GetObjectByIndex(0));
pivotTable->AddFieldToArea(PivotFieldType_Data, pivotTable->GetIBaseFields()->GetObjectByIndex(1));
pivotTable->AddFieldToArea(PivotFieldType_Data, pivotTable->GetIBaseFields()->GetObjectByIndex(2));
pivotTable->AddFieldToArea(PivotFieldType_Column, pivotTable->GetIDataField());

// 피벗 테이블 스타일 설정
pivotTable->SetPivotTableStyleType(PivotTableStyleType_PivotTableStyleMedium9);

// 출력 엑셀 파일 저장
workbook->Save(outDir->StringAppend(new String("outputCreatePivotTable.xlsx")));
샘플 코드로 생성된 피벗 테이블 이미지

샘플 코드로 생성된 피벗 테이블 이미지

C++를 사용하여 Excel 파일에서 피벗 테이블 정렬

다음 예에서는 피벗 테이블의 첫 번째 열을 내림차순으로 정렬합니다. 다음은 피벗 테이블에서 데이터를 정렬하는 단계입니다.

다음 샘플 코드는 C++를 사용하여 Excel 파일에서 피벗 테이블을 정렬하는 방법을 보여줍니다.

// 소스 디렉토리 경로.
StringPtr srcDir = new String("SourceDirectory\\");

// 출력 디렉토리 경로.
StringPtr outDir = new String("OutputDirectory\\");

// 입력 엑셀 파일의 경로
StringPtr samplePivotTable = srcDir->StringAppend(new String("SamplePivotTable.xlsx"));

// 출력 엑셀 파일의 경로
StringPtr outputSortedPivotTable = outDir->StringAppend(new String("outputSortedPivotTable.xlsx"));

// 샘플 엑셀 파일 불러오기
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(samplePivotTable);

// 첫 번째 워크시트에 액세스
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// 피벗 테이블에 액세스
intrusive_ptr<IPivotTable> pivotTable = worksheet->GetIPivotTables()->GetObjectByIndex(0);

// 피벗 테이블 정렬 설정
pivotTable->AddFieldToArea(PivotFieldType_Row, 0);
intrusive_ptr<IPivotField> pivotField = pivotTable->GetIRowFields()->GetObjectByIndex(0);
pivotField->SetAutoSort(true);
pivotField->SetAscendSort(false);

// 피벗 테이블의 데이터를 새로 고치고 계산합니다.
pivotTable->RefreshData();
pivotTable->CalculateData();

// 출력 엑셀 파일 저장
workbook->Save(outputSortedPivotTable);
샘플 코드에 의해 생성된 정렬된 피벗 테이블의 이미지

샘플 코드에 의해 생성된 정렬된 피벗 테이블의 이미지

C++를 사용하여 피벗 테이블에서 행 숨기기

Aspose.Cells for C++ API를 사용하면 피벗 테이블의 행을 숨길 수도 있습니다. 다음 예에서는 “주황색” 행 레이블이 있는 행을 숨깁니다. 다음은 피벗 테이블에서 행을 숨기는 단계입니다.

다음 샘플 코드는 C++를 사용하여 피벗 테이블에서 행을 숨기는 방법을 보여줍니다.

// 소스 디렉토리 경로.
StringPtr srcDir = new String("SourceDirectory\\");

// 출력 디렉토리 경로.
StringPtr outDir = new String("OutputDirectory\\");

// 입력 엑셀 파일의 경로
StringPtr samplePivotTable = srcDir->StringAppend(new String("SamplePivotTable.xlsx"));

// 출력 엑셀 파일의 경로
StringPtr outputHiddenRowPivotTable = outDir->StringAppend(new String("outputHiddenRowPivotTable.xlsx"));

// 샘플 엑셀 파일 불러오기
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(samplePivotTable);

// 첫 번째 워크시트에 액세스
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// 피벗 테이블에 액세스
intrusive_ptr<IPivotTable> pivotTable = worksheet->GetIPivotTables()->GetObjectByIndex(0);

// 피벗 테이블 본문 범위 가져오기
intrusive_ptr<ICellArea> dataBodyRange = pivotTable->GetIDataBodyRange();

// 피벗 테이블 시작 행
int currentRow = 5;

// 피벗 테이블 끝 행
int rowsUsed = dataBodyRange->GetendRow();

// 행을 반복하고 셀 값을 비교하고 행을 숨깁니다.
for (int i = currentRow; i < rowsUsed; i++) {
	intrusive_ptr<ICell> cell = worksheet->GetICells()->GetICell(i, 4);
	if (strcmp(cell->GetStringValue()->charValue(), "Orange") == 0) {
		worksheet->GetICells()->HideRow(i);
	}
}

// 피벗 테이블의 데이터를 새로 고치고 계산합니다.
pivotTable->RefreshData();
pivotTable->CalculateData();

// 출력 엑셀 파일 저장
workbook->Save(outputHiddenRowPivotTable);
숨겨진 행이 있는 피벗 테이블의 이미지

숨겨진 행이 있는 피벗 테이블의 이미지

C++를 사용하여 피벗 테이블 데이터 조작

Aspose.Cells for C++ API를 사용하여 기존 피벗 테이블의 데이터를 조작할 수도 있습니다. 다음 예에서는 “A2” 셀의 “Apple” 텍스트를 “Orange"로 바꾸고 피벗 테이블의 변경 사항을 반영합니다. 다음은 피벗 테이블 데이터를 조작하는 단계입니다.

다음 샘플 코드는 C++를 사용하여 피벗 테이블의 데이터를 업데이트하는 방법을 보여줍니다.

// 소스 디렉토리 경로.
StringPtr srcDir = new String("SourceDirectory\\");

// 출력 디렉토리 경로.
StringPtr outDir = new String("OutputDirectory\\");

// 입력 엑셀 파일의 경로
StringPtr samplePivotTable = srcDir->StringAppend(new String("SamplePivotTable.xlsx"));

// 출력 엑셀 파일의 경로
StringPtr outputManipulatePivotTable = outDir->StringAppend(new String("outputManipulatePivotTable.xlsx"));

// 샘플 엑셀 파일 불러오기
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(samplePivotTable);

// 첫 번째 워크시트에 액세스
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// 피벗 테이블의 소스 데이터 내부에 있는 셀 A2의 값 변경
intrusive_ptr<String> str = new String("Orange");
worksheet->GetICells()->GetObjectByIndex(new String("A2"))->PutValue(str);

// 피벗 테이블 액세스, 새로 고침 및 계산
intrusive_ptr<IPivotTable> pivotTable = worksheet->GetIPivotTables()->GetObjectByIndex(0);
pivotTable->RefreshData();
pivotTable->CalculateData();

// 출력 엑셀 파일 저장
workbook->Save(outputManipulatePivotTable);
업데이트된 데이터를 보여주는 피벗 테이블

업데이트된 데이터를 보여주는 피벗 테이블

무료 라이선스 받기

평가 제한 없이 API를 사용하려면 무료 임시 라이선스를 요청할 수 있습니다.

결론

이 기사에서는 C++를 사용하여 Excel 파일에서 피벗 테이블로 작업하는 방법을 배웠습니다. 특히 C++를 사용하여 피벗 테이블을 생성하고 피벗 테이블의 데이터를 정렬, 숨기기 및 업데이트하는 방법을 배웠습니다. Aspose.Cells for C++는 Excel 파일 작업을 위한 다양한 추가 기능을 제공하는 방대한 API입니다. API에 대한 자세한 내용은 공식 문서에서 확인할 수 있습니다. 질문이 있는 경우 무료 지원 포럼을 통해 언제든지 문의하십시오.

또한보십시오