수식 작업

개요

Aspose.Cells FOSS stores formulas as Excel-compatible strings. The library does not evaluate formulas internally — it preserves the expression verbatim in the file, and the spreadsheet application (Excel, LibreOffice Calc, or any compatible reader) computes the result when the file is opened.

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

  1. 셀 생성자 — ws.cells["A4"] = Cell(None, "=SUM(A1:A3)")
  2. .formula 속성 — ws.cells["A4"].formula = "=SUM(A1:A3)"

두 접근 방식 모두 동일한 데이터를 저장합니다. 처음부터 시트를 만들 때는 생성자 형태가 간결하고, 이미 기존 셀에 대한 참조가 있고 그 셀에 수식을 붙이고자 할 때는 속성 형태가 더 자연스럽습니다.


Cell 생성자를 통한 수식 설정

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 수식

다음 표는 자주 사용되는 Excel 함수와 Aspose.Cells FOSS에 직접 전달할 수 있는 예시 수식 문자열을 나열합니다.

목적수식 문자열참고
범위 합계=SUM(A1:A10)범위 내 모든 숫자 값을 더합니다
범위의 평균=AVERAGE(A1:A10)빈 셀을 무시합니다
최대값=MAX(A1:A10)가장 큰 수를 반환합니다
최소값=MIN(A1:A10)가장 작은 수를 반환합니다
숫자 셀을 셉니다=COUNT(A1:A10)숫자 값만 있는 셀을 셉니다
비어 있지 않은 셀을 셉니다=COUNTA(A1:A10)빈 셀이 아닌 모든 셀을 셉니다
조건부 값=IF(A1>100,"High","Low")세 인수 형태: test, true-result, false-result
수직 조회=VLOOKUP(D1,A1:B10,2,FALSE)정확히 일치 (FALSE) 권장
문자열 연결=CONCATENATE(A1," ",B1)또는 사용 =A1&" "&B1
숫자를 반올림=ROUND(A1,2)두 번째 인수는 소수점 자리수입니다

모든 수식 문자열은 다음으로 시작해야 합니다 =. 함수 이름은 대소문자를 구분하지 않습니다 Excel 호환 파일에서는, 하지만 관례적인 대문자 형태가 위에 표시됩니다 가독성을 위해.


전체 예시

다음 예시는 A 열에 숫자 값으로 구성된 5행 데이터셋을 만든 뒤, B 열에 SUM, AVERAGE, MAX, MIN 수식을 작성하고 결과를 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 does not include a formula engine. If you need the computed Python에서 수식의 결과 (예: 추가 계산을 수행하기 위해), 값을 직접 계산하고 정적 값으로 다음을 사용하여 기록하십시오 .value. 사용 최종 사용자가 파일을 스프레드시트 애플리케이션에서 열 경우에만 수식 포함 이를 평가할 수 있는.

또 보기

 한국어