सूत्रों के साथ काम करना
अवलोकन
Aspose.Cells FOSS सूत्रों को Excel‑संगत स्ट्रिंग्स के रूप में संग्रहीत करता है। लाइब्रेरी सूत्रों का आंतरिक रूप से मूल्यांकन नहीं करती — यह अभिव्यक्ति को फ़ाइल में वैसा ही रखती है, और स्प्रेडशीट एप्लिकेशन (Excel, LibreOffice Calc, या कोई भी संगत रीडर) फ़ाइल खोलते समय परिणाम की गणना करता है।
सेल में फ़ॉर्मूला रखने के दो तरीके हैं:
- सेल कंस्ट्रक्टर —
ws.cells["A4"] = Cell(None, "=SUM(A1:A3)") .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 को पास कर सकते हैं।
| Purpose | Formula string | Notes |
|---|---|---|
| एक सीमा का योग | =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 में संख्यात्मक मानों का पाँच‑पंक्तियों वाला डेटासेट बनाता है,
फिर कॉलम 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 के रूप में लिखा जाता है, जिसमें बड़े अक्षर वाले स्तंभ अक्षर और एक-आधारित पंक्ति संख्याएँ उपयोग की जाती हैं: "A1:A10", "B2:D5", "C3:C3"। FOSS लाइब्रेरी रेंज स्ट्रिंग का अनुवाद या मान्यकरण नहीं करती — एक अमान्य रेंज को शब्दशः संग्रहीत किया जाएगा और खोलने के समय स्प्रेडशीट रीडर में त्रुटि उत्पन्न करेगा।
फ़ॉर्मूले स्ट्रिंग्स के रूप में संग्रहीत होते हैं, मूल्यांकन नहीं किया जाता
Aspose.Cells FOSS में कोई फ़ॉर्मूला इंजन नहीं है। यदि आपको फ़ॉर्मूले का गणना किया हुआ परिणाम Python में चाहिए (उदाहरण के लिए, आगे की गणनाएँ करने के लिए),
तो स्वयं मान की गणना करें और इसे .value के साथ स्थिर मान के रूप में लिखें। फ़ॉर्मूले केवल तभी उपयोग करें जब अंतिम उपयोगकर्ता फ़ाइल को ऐसे स्प्रेडशीट एप्लिकेशन में खोलेंगे
जो उन्हें मूल्यांकन कर सके।
संबंधित देखें
- API Reference:
aspose.cells_fossके लिए पूर्ण क्लास और मेथड दस्तावेज़ीकरण - Knowledge Base: कार्य-उन्मुख कैसे‑करें गाइड
- Product Overview: सुविधाएँ और क्षमताओं का सारांश
- Getting Started / Installation: pip इंस्टॉल और सेटअप
- Blog: Introducing Aspose.Cells FOSS: लाइब्रेरी का अवलोकन और त्वरित प्रारंभ