수식 작업

개요

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)

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

관련 항목

 한국어