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

차트 스프레드시트에는 차트 요소의 이름(범주 이름: Category1, 시리즈 이름)과 해당 범주 및 시리즈에 맞는 숫자 데이터 표가 포함됩니다. 새 차트를 만들면 기본값이 설정된 차트 스프레드시트 데이터가 자동으로 생성됩니다. 이후 워크시트에서 스프레드시트 데이터를 수동으로 변경할 수 있습니다.
보통 차트는 복잡한 데이터(예: 재무 분석, 과학 분석)를 나타내며, 다른 셀의 값이나 동적 데이터에서 계산된 셀을 포함합니다. 셀 값을 수동으로 계산해 하드코딩하면 나중에 변경하기 어렵습니다. 특정 셀의 값을 변경하면 해당 셀에 의존하는 모든 셀도 업데이트해야 합니다. 또한 표 데이터가 다른 표의 데이터에 의존할 수 있어, 쉽게 유연하게 업데이트할 수 있는 복잡한 프레젠테이션 데이터 스키마가 필요합니다.
프레젠테이션의 Chart spreadsheet formula는 차트 스프레드시트 데이터를 자동으로 계산하고 업데이트하는 표현식입니다. 스프레드시트 수식은 특정 셀 또는 셀 집합에 대한 데이터 계산 논리를 정의합니다. 스프레드시트 수식은 셀 참조, 수학 함수, 논리 연산자, 산술 연산자, 변환 함수, 문자열 상수 등을 사용하는 수학 또는 논리 수식입니다. 수식 정의는 셀에 기록되며, 해당 셀은 단순 값을 포함하지 않고 수식에 의해 계산된 값을 반환받아 셀에 할당됩니다. 프레젠테이션의 차트 스프레드시트 수식은 실제로 Excel 수식과 동일하며, 구현을 위해 동일한 기본 함수, 연산자 및 상수가 지원됩니다.
Aspose.Slides에서 차트 스프레드시트는
Chart.getChartData.getChartDataWorkbook 메서드와
IChartDataWorkbook 형식으로 표현됩니다.
스프레드시트 수식은
IChartDataCell.setFormula 메서드로 할당 및 변경할 수 있습니다.
Aspose.Slides에서 수식에 대해 지원되는 기능은 다음과 같습니다:
- 논리 상수
- 숫자 상수
- 문자열 상수
- 오류 상수
- 산술 연산자
- 비교 연산자
- A1‑스타일 셀 참조
- R1C1‑스타일 셀 참조
- 미리 정의된 함수
보통 스프레드시트는 마지막으로 계산된 수식 값을 저장합니다. 프레젠테이션을 로드한 후 차트 데이터가 변경되지 않았다면 IChartDataCell.getValue 메서드가 해당 값을 반환합니다. 그러나 스프레드시트 데이터가 변경된 경우 ChartDataCell.Value 속성을 읽을 때 지원되지 않는 수식에 대해 CellUnsupportedDataException이 발생합니다. 이는 수식이 성공적으로 구문 분석될 때 셀 종속성이 결정되고 마지막 값의 정확성이 확인되지만, 수식을 구문 분석할 수 없을 경우 셀 값의 정확성을 보장할 수 없기 때문입니다.
프레젠테이션에 차트 스프레드시트 수식 추가하기
먼저 새 프레젠테이션의 첫 번째 슬라이드에 IShapeCollection.getShapes.addChart 메서드를 사용하여 차트를 추가합니다. 차트의 워크시트가 자동으로 생성되며 다음 메서드로 접근할 수 있습니다:
Chart.getChartData.getChartDataWorkbook 메서드:
Presentation pres = new Presentation();
try {
IChart chart = pres.getSlides().get_Item(0).getShapes().addChart(ChartType.ClusteredColumn, 150, 150, 500, 300);
IChartDataWorkbook workbook = chart.getChartData().getChartDataWorkbook();
// ...
} finally {
if (pres != null) pres.dispose();
}
셀에 값을 쓰려면 Object 타입의 IChartDataCell.setValue 속성을 사용하면 됩니다. 이는 어떤 값이든 지정할 수 있음을 의미합니다:
workbook.getCell(0, "F2").setValue(-2.5);
workbook.getCell(0, "G3").setValue(6.3);
workbook.getCell(0, "H4").setValue(3);
이제 셀에 수식을 쓰려면 IChartDataCell.setFormula 메서드를 사용할 수 있습니다:
Note: IChartDataCell.setFormula 메서드는 A1‑스타일 셀 참조를 설정하는 데 사용됩니다.
R1C1Formula 셀 참조를 설정하려면 IChartDataCell.setR1C1Formula 메서드를 사용합니다:
그런 다음 B2와 C2 셀의 값을 읽으면 계산된 결과가 반환됩니다:
Object value1 = cell1.getValue(); // 7.8
Object value2 = cell2.getValue(); // 2.1
논리 상수
셀 수식에서 FALSE 및 TRUE와 같은 논리 상수를 사용할 수 있습니다:
workbook.getCell(0, "A2").setValue(false);
IChartDataCell cell = workbook.getCell(0, "B2");
cell.setFormula("A2 = TRUE");
Object value = cell.getValue(); // 값은 boolean "false"를 포함합니다
숫자 상수
숫자 상수는 일반 표기법 또는 과학적 표기법으로 사용되어 차트 스프레드시트 수식을 만들 수 있습니다:
workbook.getCell(0, "A2").setFormula("1 + 0.5");
workbook.getCell(0, "B2").setFormula(".3 * 1E-2");
문자열 상수
문자열(리터럴) 상수는 그대로 사용되는 특정 값이며 변경되지 않습니다. 문자열 상수는 날짜, 텍스트, 숫자 등일 수 있습니다:
workbook.getCell(0, "A2").setFormula("\"abc\"");
workbook.getCell(0, "B2").setFormula("\"2/3/2020 12:00\"");
오류 상수
때때로 수식으로 결과를 계산할 수 없을 때 셀에 값 대신 오류 코드가 표시됩니다. 각 오류 유형마다 고유한 코드가 있습니다:
- #DIV/0! – 수식이 0으로 나누기를 시도합니다.
- #GETTING_DATA – 셀의 값이 아직 계산 중일 때 표시될 수 있습니다.
- #N/A – 정보가 없거나 사용할 수 없습니다. 예: 수식에 사용된 셀이 비어 있거나, 불필요한 공백 문자, 오타 등이 원인입니다.
- #NAME? – 특정 셀 또는 다른 수식 객체를 이름으로 찾을 수 없습니다.
- #NULL! – 수식에 (, )와 같은 오류가 있거나 콜론(:) 대신 공백 문자를 사용했을 때 나타납니다.
- #NUM! – 수식에 사용된 숫자가 잘못되었거나, 너무 크거나 작을 때 발생합니다.
- #REF! – 잘못된 셀 참조.
- #VALUE! – 예상치 못한 값 유형. 예를 들어 문자열 값을 숫자 셀에 입력한 경우.
IChartDataCell cell = workbook.getCell(0, "A2");
cell.setFormula("2 / 0");
Object value = cell.getValue(); // 값은 문자열 "#DIV/0!"을 포함합니다
산술 연산자
차트 워크시트 수식에서 모든 산술 연산자를 사용할 수 있습니다:
| 연산자 | 의미 | 예시 |
|---|---|---|
| + (플러스) | 덧셈 또는 단항 플러스 | 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 스타일 셀 참조를 사용하는 예시입니다:
workbook.getCell(0, "A2").setFormula("C3 + SUM(F2:H5)");
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 스타일 셀 참조를 사용하는 예시입니다:
workbook.getCell(0, "A2").setR1C1Formula("R2C4 + SUM(R5C6:R7C9)");
미리 정의된 함수
수식에서 사용할 수 있는 미리 정의된 함수가 있습니다. 이 함수들은 다음과 같은 일반적으로 사용되는 작업을 캡슐화합니다:
- 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는 차트 데이터 소스로 외부 워크북을 지원하므로 프레젠테이션 외부의 XLSX 파일에 있는 수식을 사용할 수 있습니다.
차트 수식이 동일 워크북 내 시트 이름으로 시트를 참조할 수 있나요?
예. 수식은 표준 Excel 참조 모델을 따르므로 동일 워크북 내의 다른 시트 또는 외부 워크북을 참조할 수 있습니다. 외부 참조의 경우 Excel 구문을 사용해 경로와 워크북 이름을 포함하면 됩니다.