수식 작업

개요

Aspose.Cells FOSS는 수식을 Excel 호환 문자열로 저장합니다. 라이브러리는 수식을 내부에서 평가하지 않으며 — 파일에 표현식을 그대로 보존하고, 스프레드시트 애플리케이션(Excel, LibreOffice Calc 또는 호환 가능한 리더)이 파일을 열 때 결과를 계산합니다.

셀에 수식을 입력하는 방법은 두 가지가 있습니다:

  1. Cell 생성자 — ws.cells["A4"] = Cell(None, "=SUM(A1:A3)")
  2. .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)

실제로, .valueNone이며, 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를 사용하여 정적 값으로 기록하십시오. 사용
수식은 최종 사용자가 수식을 평가할 수 있는 스프레드시트 애플리케이션에서 파일을 열 때만 사용하십시오.

관련 항목

 한국어