Bekerja dengan Rumus
Gambaran Umum
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.
Ada dua cara untuk menempatkan rumus dalam sel:
- Konstruktor sel —
ws.cells["A4"] = Cell(None, "=SUM(A1:A3)") .formulaproperti —ws.cells["A4"].formula = "=SUM(A1:A3)"
Kedua pendekatan menyimpan data yang sama. Bentuk konstruktor lebih ringkas ketika Anda membangun lembar dari awal; bentuk properti lebih alami ketika Anda sudah memiliki referensi ke sel yang ada dan ingin menambahkan rumus ke dalamnya.
Menetapkan Rumus melalui Konstruktor Cell
The Cell tanda tangan konstruktor adalah Cell(value, formula). Untuk membuat sebuah sel formula, berikan None sebagai nilai dan string ekspresi sebagai yang kedua argumen:
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")Pengaturan value=None menjadikannya eksplisit bahwa sel tidak memiliki nilai statis — isi yang ditampilkan sepenuhnya berasal dari formula. Menyertakan nilai non-None nilai bersamaan dengan formula diperbolehkan tetapi tidak biasa; kebanyakan pembaca spreadsheet akan menampilkan hasil formula dan mengabaikan nilai yang disimpan.
Menetapkan Formula melalui .formula Properti
Tetapkan langsung ke cell.formula ketika Anda sudah memiliki referensi sel atau ketika Anda ingin menambahkan rumus ke sel yang sebelumnya telah diisi dengan nilai:
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")Membaca Kembali Rumus
Setelah menulis sel rumus, gunakan .formula untuk mengambil string ekspresi dan .value untuk mengambil nilai statis apa pun (jika ada) yang disimpan bersamanya.
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)Dalam praktik, .value adalah None untuk setiap sel yang dibuat dengan Cell(None, formula). Jika Anda memuat workbook yang ada yang sebelumnya disimpan dengan nilai yang dihitung yang di-cache bersamaan dengan rumus, .value dapat mengembalikan hasil cache terakhir — tetapi ini perilaku tergantung pada bagaimana aplikasi asal menyimpan file dan seharusnya tidak dapat diandalkan untuk perhitungan baru.
Untuk membedakan sel rumus dari sel nilai biasa pada waktu berjalan:
cell = ws.cells["A1"]
if cell.formula:
print(f"Formula cell: {cell.formula}")
else:
print(f"Value cell: {cell.value}")Formula Excel Umum
Tabel berikut mencantumkan fungsi Excel yang sering digunakan beserta contoh string formula yang dapat Anda berikan langsung ke Aspose.Cells FOSS.
| Tujuan | String rumus | Catatan |
|---|---|---|
| Jumlahkan rentang | =SUM(A1:A10) | Menambahkan semua nilai numerik dalam rentang |
| Rata-rata dari rentang | =AVERAGE(A1:A10) | Mengabaikan sel kosong |
| Nilai maksimum | =MAX(A1:A10) | Mengembalikan angka terbesar |
| Nilai minimum | =MIN(A1:A10) | Mengembalikan angka terkecil |
| Hitung sel numerik | =COUNT(A1:A10) | Menghitung sel yang hanya berisi nilai numerik |
| Hitung sel yang tidak kosong | =COUNTA(A1:A10) | Menghitung setiap sel yang tidak kosong |
| Nilai bersyarat | =IF(A1>100,"High","Low") | Bentuk tiga argumen: test, true-result, false-result |
| Pencarian vertikal | =VLOOKUP(D1,A1:B10,2,FALSE) | Kecocokan tepat (FALSE) disarankan |
| Gabungkan string | =CONCATENATE(A1," ",B1) | Atau gunakan =A1&" "&B1 |
| Bulatkan angka | =ROUND(A1,2) | Argumen kedua adalah tempat desimal |
Semua string formula harus dimulai dengan =. Nama fungsi tidak sensitif huruf besar/kecil dalam file yang kompatibel dengan Excel, tetapi bentuk huruf kapital konvensional ditampilkan di atas untuk keterbacaan.
Contoh Lengkap
Contoh berikut membuat dataset lima baris berisi nilai numerik di kolom A, kemudian menulis formula SUM, AVERAGE, MAX, dan MIN ke kolom B, dan menyimpan hasilnya ke file 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")Saat file ini dibuka di Excel atau LibreOffice Calc, kolom C akan menampilkan:
| Baris | Rumus | Hasil yang diharapkan |
|---|---|---|
| C2 | =SUM(A2:A6) | 105 |
| C3 | =AVERAGE(A2:A6) | 21 |
| C4 | =MAX(A2:A6) | 35 |
| C5 | =MIN(A2:A6) | 7 |
Catatan
String rumus harus dimulai dengan =
Perpustakaan menyimpan string apa adanya. Menghilangkan awalan = menyebabkan pembaca spreadsheet memperlakukan teks sebagai string literal bukan sebagai rumus.
##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)"Referensi rentang menggunakan notasi Excel A1 standar
Rentang baris-kolom ditulis sebagai FirstCell:LastCell dengan menggunakan huruf kolom kapital dan nomor baris berbasis satu: "A1:A10", "B2:D5", "C3:C3". FOSS perpustakaan tidak menerjemahkan atau memvalidasi string rentang — rentang yang tidak valid akan disimpan persis dan menyebabkan kesalahan pada pembaca spreadsheet saat dibuka.
Formula disimpan sebagai string, tidak dievaluasi
Aspose.Cells FOSS does not include a formula engine. If you need the computed hasil dari sebuah rumus di Python (misalnya, untuk melakukan perhitungan lebih lanjut), hitung nilai tersebut sendiri dan tulis sebagai nilai statis dengan .value. Gunakan rumus hanya ketika pengguna akhir akan membuka file di aplikasi spreadsheet yang dapat mengevaluasinya.
Lihat Juga
- Referensi API: Dokumentasi lengkap kelas dan metode untuk
aspose.cells_foss - Basis Pengetahuan: Panduan cara-cara berorientasi tugas
- Gambaran Produk: Ringkasan fitur dan kemampuan
- Memulai / Instalasi: pip install dan penyiapan
- Blog: Memperkenalkan Aspose.Cells FOSS: Gambaran perpustakaan dan panduan cepat