수식 작업
개요
Aspose.Cells FOSS는 수식을 Excel 호환 문자열로 저장합니다. 라이브러리는 수식을 내부에서 평가하지 않으며 — 파일에 표현식을 그대로 보존하고, 스프레드시트 애플리케이션(Excel, LibreOffice Calc 또는 호환 가능한 리더)이 파일을 열 때 결과를 계산합니다.
셀에 수식을 입력하는 방법은 두 가지가 있습니다:
- Cell 생성자 —
ws.cells["A4"] = Cell(None, "=SUM(A1:A3)") .formula속성 —ws.cells["A4"].formula = "=SUM(A1:A3)"
두 접근 방식 모두 동일한 데이터를 저장합니다. 생성자 형태는 당신이 처음부터 시트를 만들 때 간결합니다; 속성 형태는 이미 기존 셀에 대한 참조가 있고 그 셀에 수식을 연결하려는 경우 더 자연스럽습니다.
셀 생성자를 통한 수식 설정
Cell 생성자 서명은 Cell(value, formula)입니다.
순수
수식 셀을 만들려면 None을 값으로 전달하고 식 문자열을 두 번째
인수로 전달하십시오:
from aspose.cells_foss import Workbook, Cell
workbook = Workbook()
ws = workbook.worksheets[0]
##Input values
ws.cells["A1"] = Cell(10)
ws.cells["A2"] = Cell(25)
ws.cells["A3"] = Cell(15)
##Formula cell: value=None, formula="=SUM(A1:A3)"
ws.cells["A4"] = Cell(None, "=SUM(A1:A3)")
workbook.save("formula_constructor.xlsx")
print("Saved formula_constructor.xlsx")value=None를 설정하면 셀에 정적 값이 없다는 것이 명시적으로 표시됩니다 — 표시되는 내용은 전적으로 수식에서 가져옵니다. 수식과 함께 비None 값을 전달하는 것은 허용되지만 드물며, 대부분의 스프레드시트 리더는 수식 결과를 표시하고 저장된 값을 무시합니다.
.formula 속성을 통한 수식 설정
이미 셀 참조를 보유하고 있거나 이전에 값으로 작성된 셀에 수식을 추가하려는 경우 cell.formula에 직접 할당하십시오:
from aspose.cells_foss import Workbook
workbook = Workbook()
ws = workbook.worksheets[0]
##Write input data
for i, val in enumerate([4, 8, 15, 16, 23], start=1):
ws.cells[f"A{i}"].value = val
##Attach a formula to an existing cell reference
cell = ws.cells["B1"]
cell.formula = "=AVERAGE(A1:A5)"
##Or assign directly by address
ws.cells["B2"].formula = "=MAX(A1:A5)"
ws.cells["B3"].formula = "=MIN(A1:A5)"
workbook.save("formula_property.xlsx")
print("Saved formula_property.xlsx")수식 다시 읽기
수식 셀을 작성한 후, .formula을 사용하여 식 문자열을 가져오고.value을 사용하여 함께 저장된 정적 값(있는 경우)을 가져옵니다.
from aspose.cells_foss import Workbook, Cell
workbook = Workbook()
ws = workbook.worksheets[0]
ws.cells["A1"] = Cell(None, "=SUM(B1:B5)")
cell = ws.cells["A1"]
print(cell.formula) # =SUM(B1:B5)
print(cell.value) # None (no static value was set)실제로, .value은 None이며, Cell(None, formula)으로 생성된 모든 셀에 적용됩니다.
이미 계산된 값이 수식과 함께 캐시된 상태로 이전에 저장된 워크북을 로드하면,.value이 마지막 캐시된 결과를 반환할 수 있습니다 — 그러나 이 동작은
원본 애플리케이션이 파일을 저장한 방식에 따라 달라지며,
새로운 계산에 의존해서는 안 됩니다.
런타임에 수식 셀과 일반 값 셀을 구분하려면:
cell = ws.cells["A1"]
if cell.formula:
print(f"Formula cell: {cell.formula}")
else:
print(f"Value cell: {cell.value}")일반 Excel 수식
다음 표는 Aspose.Cells FOSS에 직접 전달할 수 있는 예제 수식 문자열과 함께 자주 사용되는 Excel 함수들을 나열합니다.
| 목적 | 수식 문자열 | 비고 |
|---|---|---|
| 범위 합계 | =SUM(A1:A10) | 범위 내 모든 숫자 값을 더합니다 |
| 범위 평균 | =AVERAGE(A1:A10) | 빈 셀을 무시합니다 |
| 최대값 | =MAX(A1:A10) | 가장 큰 수를 반환합니다 |
| 최소값 | =MIN(A1:A10) | 가장 작은 수를 반환합니다 |
| 숫자 셀 개수 | =COUNT(A1:A10) | 숫자 값이 있는 셀만 셉니다 |
| 비어 있지 않은 셀 개수 | =COUNTA(A1:A10) | 빈 셀이 아닌 모든 셀을 셉니다 |
| 조건부 값 | =IF(A1>100,"High","Low") | 세 인수 형태: 테스트, 참 결과, 거짓 결과 |
| 수직 조회 | =VLOOKUP(D1,A1:B10,2,FALSE) | 정확히 일치(FALSE) 사용을 권장합니다 |
| 문자열 연결 | =CONCATENATE(A1," ",B1) | 또는 =A1&" "&B1 사용 |
| 숫자 반올림 | =ROUND(A1,2) | 두 번째 인수는 소수점 자리수입니다 |
모든 수식 문자열은 = 로 시작해야 합니다. 함수 이름은 대소문자를 구분하지 않으며
Excel 호환 파일에서, 그러나 관례적인 대문자 형태는 위에 표시됩니다
가독성을 위해.
완전한 예제
다음 예제는 A 열에 숫자 값으로 구성된 5행 데이터 세트를 생성하고, 그런 다음 SUM, AVERAGE, MAX 및 MIN 수식을 B 열에 작성하고, 결과를 XLSX 파일로 저장합니다.
from aspose.cells_foss import Workbook, Cell
workbook = Workbook()
ws = workbook.worksheets[0]
##--- Headers ---
ws.cells["A1"].value = "Value"
ws.cells["B1"].value = "Formula"
ws.cells["C1"].value = "Result (evaluated by Excel)"
##--- Input data in A2:A6 ---
input_values = [14, 28, 7, 35, 21]
for i, val in enumerate(input_values, start=2):
ws.cells[f"A{i}"].value = val
##--- Formula labels in B column ---
ws.cells["B2"].value = "SUM"
ws.cells["B3"].value = "AVERAGE"
ws.cells["B4"].value = "MAX"
ws.cells["B5"].value = "MIN"
##--- Formulas in C column ---
ws.cells["C2"] = Cell(None, "=SUM(A2:A6)")
ws.cells["C3"] = Cell(None, "=AVERAGE(A2:A6)")
ws.cells["C4"] = Cell(None, "=MAX(A2:A6)")
ws.cells["C5"] = Cell(None, "=MIN(A2:A6)")
##--- Save ---
workbook.save("formulas_demo.xlsx")
print("Saved formulas_demo.xlsx")이 파일을 Excel 또는 LibreOffice Calc에서 열면, C 열에 다음과 같이 표시됩니다:
| 행 | 수식 | 예상 결과 |
|---|---|---|
| C2 | =SUM(A2:A6) | 105 |
| C3 | =AVERAGE(A2:A6) | 21 |
| C4 | =MAX(A2:A6) | 35 |
| C5 | =MIN(A2:A6) | 7 |
노트
수식 문자열은 = 로 시작해야 합니다.
라이브러리는 문자열을 그대로 저장합니다. 선행 =을 생략하면 스프레드시트 리더가 텍스트를 수식이 아닌 리터럴 문자열로 처리합니다.
##Correct — starts with =
ws.cells["A1"].formula = "=SUM(B1:B5)"
##Wrong — treated as the literal text "SUM(B1:B5)", not a formula
ws.cells["A1"].formula = "SUM(B1:B5)"범위 참조는 표준 Excel A1 표기법을 사용합니다
행-열 범위는 FirstCell:LastCell와 같이 대문자 열 문자와 1부터 시작하는 행 번호를 사용하여 작성됩니다: "A1:A10", "B2:D5", "C3:C3". FOSS 라이브러리는 범위 문자열을 변환하거나 검증하지 않으며 — 잘못된 범위는 그대로 저장되어 열 때 스프레드시트 리더에서 오류를 일으킵니다.
수식은 문자열로 저장되며, 평가되지 않습니다.
Aspose.Cells FOSS에는 수식 엔진이 포함되어 있지 않습니다. 수식의 계산된
결과가 Python에서 필요하다면(예: 추가 계산을 수행하기 위해),
값을 직접 계산하고 .value를 사용하여 정적 값으로 기록하십시오. 사용
수식은 최종 사용자가 수식을 평가할 수 있는 스프레드시트 애플리케이션에서 파일을 열 때만 사용하십시오.
관련 항목
- API 참조:
aspose.cells_foss에 대한 전체 클래스 및 메서드 문서 - 지식 베이스: 작업 중심의 사용 방법 가이드
- 제품 개요: 기능 및 역량 요약
- 시작하기 / 설치: pip 설치 및 설정
- 블로그: Aspose.Cells FOSS 소개: 라이브러리 개요 및 빠른 시작