Formüllerle Çalışma

Genel Bakış

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.

Bir hücreye formül yerleştirmenin iki yolu vardır:

  1. Hücre yapıcı — ws.cells["A4"] = Cell(None, "=SUM(A1:A3)")
  2. .formula özellik — ws.cells["A4"].formula = "=SUM(A1:A3)"

Her iki yaklaşım da aynı veriyi depolar. Yapıcı form, bir sayfayı sıfırdan oluştururken kompakt bir seçenektir; özellik form ise zaten mevcut bir hücreye referansınız olduğunda ve ona bir formül eklemek istediğinizde daha doğal olur.


Cell Yapıcı Kullanarak Formül Ayarlama

Bu Cell yapıcı imzası Cell(value, formula). Saf bir formül hücresi, geçirin None değer olarak ve ifade dizesini ikinci argüman:

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")

Ayar value=None hücrenin statik bir değeri olmadığını açıkça gösterir — onun görüntülenen içeriği tamamen formülden alır. Non-None değer formülle birlikte kullanılması izinlidir ancak alışılmadık bir durumdur; çoğu elektronik tablo okuyucusu görüntüler formül sonucunu ve depolanmış değeri yok sayar.


Formülü … aracılığıyla ayarlama .formula Özellik

Doğrudan atayın cell.formula zaten bir hücre referansına sahip olduğunuzda veya daha önce bir değerle yazılmış bir hücreye formül eklemek istiyorsunuz:

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")

Formülü Geri Okuma

Bir formül hücresi yazdıktan sonra, kullanın .formula ifade dizesini almak için ve .value yanında depolanmış olabilecek statik değeri (varsa) almak için.

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)

Pratikte, .value şudur None ile oluşturulan herhangi bir hücre için Cell(None, formula). Daha önce hesaplanmış değerlerle kaydedilmiş mevcut bir çalışma kitabını yüklerseniz formüllerle birlikte önbelleğe alınmış, .value son önbelleğe alınmış sonucu döndürebilir — ancak bu davranış, dosyayı kaydeden uygulamanın nasıl kaydettiğine bağlıdır ve yeni hesaplamalar için güvenilir olmamalıdır.

Çalışma zamanında bir formül hücresini düz değer hücresinden ayırt etmek için:

cell = ws.cells["A1"]
if cell.formula:
    print(f"Formula cell: {cell.formula}")
else:
    print(f"Value cell: {cell.value}")

Yaygın Excel Formülleri

Aşağıdaki tablo, sık kullanılan Excel işlevlerini, Aspose.Cells FOSS’a doğrudan aktarabileceğiniz örnek formül dizgeleriyle listeler.

AmaçFormül dizesiNotlar
Bir aralığı toplama=SUM(A1:A10)Aralıktaki tüm sayısal değerleri toplar
Bir aralığın ortalaması=AVERAGE(A1:A10)Boş hücreleri yok sayar
Maksimum değer=MAX(A1:A10)En büyük sayıyı döndürür
Minimum değer=MIN(A1:A10)En küçük sayıyı döndürür
Sayısal hücreleri say=COUNT(A1:A10)Yalnızca sayısal değerleri olan hücreleri sayar
Boş olmayan hücreleri say=COUNTA(A1:A10)Boş olmayan herhangi bir hücreyi sayar
Koşullu değer=IF(A1>100,"High","Low")Üç argümanlı form: test, doğru-sonuç, yanlış-sonuç
Dikey arama=VLOOKUP(D1,A1:B10,2,FALSE)Tam eşleşme (FALSE) önerilir
Dizeleri birleştir=CONCATENATE(A1," ",B1)Ya da kullan =A1&" "&B1
Bir sayıyı yuvarla=ROUND(A1,2)İkinci argüman ondalık basamak sayısıdır

Tüm formül dizgileri şununla başlamalıdır =. Fonksiyon adları, içinde büyük/küçük harfe duyarsızdır Excel uyumlu dosyalarda, ancak geleneksel büyük harf biçimi yukarıda gösterilmiştir okunabilirlik.


Tam Örnek

Aşağıdaki örnek, A sütununda sayısal değerlerden oluşan beş satırlık bir veri kümesi oluşturur, ardından B sütununa SUM, AVERAGE, MAX ve MIN formüllerini yazar ve sonucu bir XLSX dosyasına kaydeder.

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")

Bu dosya Excel veya LibreOffice Calc’ta açıldığında, C sütunu şu şekilde gösterir:

SatırFormülBeklenen sonuç
C2=SUM(A2:A6)105
C3=AVERAGE(A2:A6)21
C4=MAX(A2:A6)35
C5=MIN(A2:A6)7

Notlar

Formül dizgileri şununla başlamalıdır =

Kütüphane dizeyi olduğu gibi saklar. Baştaki = sebep olur tablo okuyucusunun metni bir formül yerine harfi harfine bir dize olarak ele almasına.

##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)"

Aralık referansları standart Excel A1 notasyonunu kullanır

Satır-sütun aralıkları şu şekilde yazılır FirstCell:LastCell büyük harf sütun kullanarak harfleri ve birden başlayan satır numaralarını: "A1:A10", "B2:D5", "C3:C3". Açık Kaynak kütüphane aralık dizesini çevirmiyor veya doğrulamıyor — geçersiz bir aralık tam olarak saklanacak ve açılışta tablo okuyucusunda bir hataya neden olacaktır.

Formüller dize olarak saklanır, değerlendirilmez

Aspose.Cells FOSS does not include a formula engine. If you need the computed Python içindeki bir formülün sonucu (örneğin, daha fazla hesaplama yapmak için), değeri kendiniz hesaplayın ve statik bir değer olarak şununla yazın .value. Kullan formüller yalnızca son kullanıcı dosyayı bir elektronik tablo uygulamasında açtığında bunları değerlendirebilen.

Ayrıca Bakınız

 Türkçe