C++를 사용하여 프레젠테이션에서 차트 워크시트 수식 적용
개요
차트 워크시트는 프레젠테이션의 차트 뒤에 있는 데이터 소스입니다. 카테고리와 시리즈 이름을 차트가 표시하는 수치 값과 함께 저장합니다. Aspose.Slides에서는 이 워크시트를 차트 데이터 워크북을 통해 사용할 수 있으며, 이를 통해 차트 데이터를 프로그래밍 방식으로 처리할 수 있습니다.
이 문서에서는 차트 데이터에 워크시트 수식을 사용하여 셀 값을 수동으로 입력하는 대신 자동으로 계산·업데이트하는 방법을 설명합니다. 수식 할당, A1‑스타일 및 R1C1‑스타일 참조 사용, 워크북 수식 재계산, 프레젠테이션 차트 워크시트에서 지원되는 상수·연산자·셀 참조·미리 정의된 함수 등을 다룹니다.
프레젠테이션에서 차트 스프레드시트 수식에 대해
프레젠테이션의 차트 스프레드시트(또는 차트 워크시트)는 차트의 데이터 소스입니다. 차트 스프레드시트에는 차트에 그래픽으로 표시되는 데이터가 들어 있습니다. PowerPoint에서 차트를 만들면 해당 차트와 연결된 워크시트가 자동으로 생성됩니다. 차트 워크시트는 라인 차트, 막대 차트, 선버스트 차트, 파이 차트 등 모든 차트 유형에 대해 생성됩니다. PowerPoint에서 차트 스프레드시트를 보려면 차트를 더블클릭하십시오:

차트 스프레드시트에는 차트 요소 이름(범주 이름: Category1, 시리즈 이름)과 이러한 범주·시리즈에 대응하는 수치 데이터 표가 포함됩니다. 기본적으로 새 차트를 만들면 차트 스프레드시트 데이터가 기본값으로 설정됩니다. 이후 워크시트에서 데이터를 수동으로 변경할 수 있습니다.
보통 차트는 복잡한 데이터를 나타내며(예: 재무 분석, 과학 분석) 다른 셀의 값이나 동적 데이터로부터 계산된 셀을 포함합니다. 셀 값을 수동으로 계산해 하드코딩하면 향후 변경이 어려워집니다. 특정 셀 값을 변경하면 이를 참조하는 모든 셀도 업데이트해야 합니다. 또한 표 데이터가 다른 표의 데이터에 의존할 수 있어, 프레젠테이션 데이터 구조가 복잡해지고 손쉽고 유연하게 업데이트할 필요가 생깁니다.
프레젠테이션에서 차트 스프레드시트 수식은 차트 스프레드시트 데이터를 자동으로 계산·업데이트하는 표현식입니다. 수식은 특정 셀 또는 셀 집합에 대한 데이터 계산 논리를 정의합니다. 수식은 셀 참조·수학 함수·논리 연산자·산술 연산자·변환 함수·문자열 상수 등을 사용합니다. 수식 정의는 셀에 기록되며, 해당 셀은 단순 값이 아니라 수식을 포함합니다. 수식은 값을 계산해 반환하고, 그 값이 셀에 할당됩니다. 프레젠테이션의 차트 스프레드시트 수식은 Excel 수식과 동일하며, 동일한 기본 함수·연산자·상수를 지원합니다.
Aspose.Slides에서 차트 스프레드시트는 ChartData::get_ChartDataWorkbook() 메서드와 IChartDataWorkbook 타입으로 제공됩니다. 스프레드시트 수식은 IChartDataCell::set_Formula() 메서드로 할당·변경할 수 있습니다. Aspose.Slides에서 수식에 대해 지원되는 기능은 다음과 같습니다:
- 논리 상수
- 숫자 상수
- 문자열 상수
- 오류 상수
- 산술 연산자
- 비교 연산자
- A1‑스타일 셀 참조
- R1C1‑스타일 셀 참조
- 미리 정의된 함수
일반적으로 스프레드시트는 마지막으로 계산된 수식 값을 저장합니다. 프레젠테이션 로드 후 차트 데이터가 변경되지 않았다면 IChartDataCell.get_Value() 메서드가 이러한 값을 반환합니다. 그러나 스프레드시트 데이터가 변경된 경우 ChartDataCell.get_Value() 메서드를 호출하면 지원되지 않는 수식에 대해 CellUnsupportedDataException이 발생합니다. 이는 수식이 성공적으로 파싱되면 셀 의존성이 결정되고 마지막 값의 정확성이 검증되지만, 파싱에 실패하면 셀 값의 정확성을 보장할 수 없기 때문입니다.
프레젠테이션에 차트 스프레드시트 수식 추가
먼저 새 프레젠테이션의 첫 번째 슬라이드에 IShapeCollection::AddChart() 메서드로 차트를 추가합니다. 차트 워크시트가 자동으로 생성되며 ChartData::get_ChartDataWorkbook() 메서드로 접근할 수 있습니다:
auto presentation = System::MakeObject<Presentation>();
auto chart = presentation->get_Slides()->idx_get(0)->get_Shapes()->AddChart(ChartType::ClusteredColumn, 150.0f, 150.0f, 500.0f, 300.0f);
auto workbook = chart->get_ChartData()->get_ChartDataWorkbook();
// ...
다음과 같이 Object 타입의 IChartDataCell.set_Value() 메서드를 사용해 셀에 값을 기록할 수 있습니다:
workbook->GetCell(0, u"F2")->set_Value(System::ObjectExt::Box<double>(-2.5));
workbook->GetCell(0, u"G3")->set_Value(System::ObjectExt::Box<double>(6.3));
workbook->GetCell(0, u"H4")->set_Value(System::ObjectExt::Box<int32_t>(3));
이제 셀에 수식을 쓰려면 IChartDataCell::set_Formula() 메서드를 사용합니다:
Note: IChartDataCell::set_Formula() 메서드는 A1‑스타일 셀 참조를 설정하는 데 사용됩니다.
R1C1‑스타일 셀 참조를 설정하려면 IChartDataCell::set_R1C1Formula() 메서드를 사용합니다:
그런 다음 B2와 C2 셀의 값을 읽으면 계산된 결과가 반환됩니다:
auto value1 = cell1->get_Value(); // 7.8
auto value2 = cell2->get_Value(); // 2.1
논리 상수
셀 수식에서 FALSE와 TRUE와 같은 논리 상수를 사용할 수 있습니다:
숫자 상수
숫자를 일반 표기법이나 과학적 표기법으로 사용해 차트 스프레드시트 수식을 만들 수 있습니다:
문자열 상수
문자열(리터럴) 상수는 있는 그대로 사용되는 특정 값이며 변경되지 않습니다. 문자열 상수는 날짜, 텍스트, 숫자 등일 수 있습니다:
오류 상수
때때로 수식으로 결과를 계산할 수 없을 때 오류 코드가 셀에 표시됩니다. 각 오류 유형마다 고유 코드가 있습니다:
- #DIV/0! - 수식이 0으로 나누기를 시도함.
- #GETTING_DATA - 값이 아직 계산 중일 때 셀에 표시될 수 있음.
- #N/A - 정보가 누락되었거나 사용할 수 없음. 원인 예: 수식에 사용된 셀이 비어 있거나, 여분의 공백 문자, 오타 등.
- #NAME? - 지정한 셀이나 다른 수식 객체를 이름으로 찾을 수 없음.
- #NULL! - 수식에 오류가 있을 때 발생(예: (,) 또는 콜론(:) 대신 공백 문자 사용).
- #NUM! - 수식의 숫자가 유효하지 않음(너무 길거나 너무 짧음 등).
- #REF! - 잘못된 셀 참조.
- #VALUE! - 예상하지 못한 값 유형. 예를 들어 문자열 값을 숫자 셀에 넣은 경우.
산술 연산자
차트 워크시트 수식에서 모든 산술 연산자를 사용할 수 있습니다:
| 연산자 | 의미 | 예시 |
|---|---|---|
| + (플러스) | 덧셈 또는 단항 플러스 | 2 + 3 |
| - (마이너스) | 뺄셈 또는 부호변환 | 2 - 3 -3 |
| * (곱셈) | 곱셈 | 2 * 3 |
| / (슬래시) | 나눗셈 | 2 / 3 |
| % (퍼센트) | 백분율 | 30% |
| ^ (캐럿) | 거듭제곱 | 2 ^ 3 |
Note: 연산 순서를 변경하려면 먼저 계산할 부분을 괄호로 감싸십시오.
비교 연산자
비교 연산자를 사용해 셀 값을 비교할 수 있습니다. 이 연산자를 사용하면 결과가 TRUE 또는 FALSE인 논리값이 반환됩니다:
| 연산자 | 의미 | 예시 |
|---|---|---|
| = (등호) | 같음 | A2 = 3 |
| <> (부등호) | 같지 않음 | A2 <> 3 |
| > (greater than) | 보다 큼 | A2 > 3 |
| >= (greater than or equal) | 보다 크거나 같음 | A2 >= 3 |
| < (less than) | 보다 작음 | A2 < 3 |
| <= (less than or equal) | 보다 작거나 같음 | A2 <= 3 |
A1‑스타일 셀 참조
A1‑스타일 셀 참조는 열이 문자 식별자(예: “A")이고 행이 숫자 식별자(예: “1")인 워크시트에서 사용됩니다. A1‑스타일 셀 참조는 다음과 같이 사용할 수 있습니다:
| 셀 참조 | 예시 | ||
|---|---|---|---|
| 절대 | 상대 | 혼합 | |
| 셀 | $A$2 | A2 | A$2 $A2 |
| 행 | $2:$2 | 2:2 | - |
| 열 | $A:$A | A:A | - |
| 범위 | $A$2:$C$4 | A2:C4 | $A$2:C4 A$2:$C4 |
다음은 A1‑스타일 셀 참조를 수식에서 사용하는 예시입니다:
R1C1‑스타일 셀 참조
R1C1‑스타일 셀 참조는 행과 열 모두 숫자 식별자를 사용하는 워크시트에서 사용됩니다. R1C1‑스타일 셀 참조는 다음과 같이 사용할 수 있습니다:
| 셀 참조 | 예시 | ||
|---|---|---|---|
| 절대 | 상대 | 혼합 | |
| 셀 | R2C3 | R[2]C[3] | R2C[3] R[2]C3 |
| 행 | R2 | R[2] | - |
| 열 | C3 | C[3] | - |
| 범위 | R2C3:R5C7 | R[2]C[3]:R[5]C[7] | R2C3:R[5]C[7] R[2]C3:R5C[7] |
다음은 R1C1‑스타일 셀 참조를 수식에서 사용하는 예시입니다:
미리 정의된 함수
수식에서 구현을 간소화하기 위해 사용할 수 있는 미리 정의된 함수가 있습니다. 이 함수들은 다음과 같은 일반적인 작업을 캡슐화합니다:
- ABS
- AVERAGE
- CEILING
- CHOOSE
- CONCAT
- CONCATENATE
- DATE (1900 날짜 시스템)
- DAYS
- FIND
- FINDB
- IF
- INDEX (reference form)
- LOOKUP (vector form)
- MATCH (vector form)
- MAX
- SUM
- VLOOKUP
FAQ
차트 수식에 대한 외부 Excel 파일을 데이터 소스로 사용할 수 있나요?
예. Aspose.Slides는 chart’s data source 로 외부 워크북을 지원하므로 프레젠테이션 외부의 XLSX 파일 수식을 사용할 수 있습니다.
차트 수식이 동일 워크북 내 시트 이름으로 시트를 참조할 수 있나요?
예. 수식은 표준 Excel 참조 모델을 따르므로 동일 워크북 내 다른 시트나 외부 워크북을 참조할 수 있습니다. 외부 참조의 경우 Excel 구문을 사용해 경로와 워크북 이름을 포함하면 됩니다.