ทำงานกับสูตร
ภาพรวม
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.
มีสองวิธีในการใส่สูตรลงในเซลล์:
- คอนสตรัคเตอร์เซลล์ —
ws.cells["A4"] = Cell(None, "=SUM(A1:A3)") .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") | รูปแบบสามอาร์กิวเมนต์: การทดสอบ, ผลลัพธ์เมื่อเป็นจริง, ผลลัพธ์เมื่อเป็นเท็จ |
| การค้นหาแนวตั้ง | =VLOOKUP(D1,A1:B10,2,FALSE) | การจับคู่ที่ตรงกันพอดี (FALSE) แนะนำ |
| ต่อสตริงเข้าด้วยกัน | =CONCATENATE(A1," ",B1) | หรือใช้ =A1&" "&B1 |
| ปัดจำนวน | =ROUND(A1,2) | อาร์กิวเมนต์ที่สองคือตำแหน่งทศนิยม |
สตริงสูตรทั้งหมดต้องเริ่มต้นด้วย =. ชื่อฟังก์ชันไม่สนใจตัวพิมพ์ใหญ่/เล็กใน ไฟล์ที่เข้ากันได้กับ Excel, แต่รูปแบบตัวพิมพ์ใหญ่ตามแบบแผนที่แสดงข้างต้นสำหรับ ความอ่านง่าย.
ตัวอย่างเต็ม
ตัวอย่างต่อไปนี้สร้างชุดข้อมูลห้าบรรทัดของค่าตัวเลขในคอลัมน์ A, จากนั้นเขียนสูตร 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)"การอ้างอิงช่วงใช้รูปแบบ A1 ของ Excel มาตรฐาน
ช่วงแถว-คอลัมน์เขียนเป็น FirstCell:LastCell โดยใช้คอลัมน์ตัวพิมพ์ใหญ่ ตัวอักษรและหมายเลขแถวเริ่มจากหนึ่ง: "A1:A10", "B2:D5", "C3:C3". โครงการ FOSS ไลบรารีไม่แปลหรือยืนยันความถูกต้องของสตริงช่วง — ช่วงที่ไม่ถูกต้องจะ ถูกเก็บไว้ตามเดิมและทำให้เกิดข้อผิดพลาดในโปรแกรมอ่านสเปรดชีตขณะเปิดไฟล์.
สูตรจะถูกเก็บเป็นสตริง, ไม่ได้ประมวลผล
Aspose.Cells FOSS does not include a formula engine. If you need the computed ผลลัพธ์ของสูตรใน Python (เช่น เพื่อทำการคำนวณต่อไป), คำนวณค่าด้วยตนเองและเขียนเป็นค่าคงที่ด้วย .value. ใช้ สูตรเฉพาะเมื่อผู้ใช้ปลายทางจะเปิดไฟล์ในแอปพลิเคชันสเปรดชีต ที่สามารถประเมินผลได้.
ดูเพิ่มเติม
- อ้างอิง API: เอกสารอธิบายคลาสและเมธอดเต็มสำหรับ
aspose.cells_foss - ฐานความรู้: คู่มือเชิงปฏิบัติการที่มุ่งเน้นงาน
- ภาพรวมของผลิตภัณฑ์: สรุปคุณลักษณะและความสามารถ
- เริ่มต้นใช้งาน / การติดตั้ง: การติดตั้งและตั้งค่า pip
- Blog: แนะนำ Aspose.Cells FOSS: ภาพรวมของไลบรารีและการเริ่มต้นอย่างรวดเร็ว