PHP का उपयोग करके प्रस्तुतियों में चार्ट वर्कशीट फ़ॉर्मूले लागू करें

सारांश

एक चार्ट वर्कशीट प्रस्तुति में चार्ट के पीछे डेटा स्रोत है। यह श्रेणी और श्रृंखला नामों को उन संख्यात्मक मानों के साथ संग्रहीत करता है जो चार्ट द्वारा प्रदर्शित किए जाते हैं। Aspose.Slides में, इस वर्कशीट को चार्ट डेटा वर्कबुक के माध्यम से उपलब्ध कराया जाता है, जिससे आप चार्ट डेटा के साथ प्रोग्रामेटिक रूप से काम कर सकते हैं।

यह लेख बताता है कि चार्ट डेटा में वर्कशीट फ़ॉर्मूले कैसे उपयोग किए जाएँ ताकि सेल मानों की गणना स्वतः की जा सके और मैन्युअली प्रविष्ट करने के बजाय अपडेट हो सके। यह फ़ॉर्मूले असाइन करने, A1-शैली और R1C1-शैली दोनों संदर्भों का उपयोग करने, वर्कबुक फ़ॉर्मूले को पुन: गणना करने, और प्रस्तुतियों में चार्ट वर्कशीट के लिए उपलब्ध समर्थित स्थिरांक, ऑपरेटर, सेल संदर्भ, और पूर्वनिर्धारित फ़ंक्शन के साथ काम करने को दर्शाता है।

प्रस्तुति में चार्ट स्प्रेडशीट फ़ॉर्मूले के बारे में

चार्ट स्प्रेडशीट (या चार्ट वर्कशीट) प्रस्तुति में चार्ट का डेटा स्रोत होता है। चार्ट स्प्रेडशीट में डेटा होते हैं, जो ग्राफ़िक रूप में चार्ट पर प्रदर्शित होते हैं। जब आप PowerPoint में चार्ट बनाते हैं, तो इस चार्ट से संबंधित वर्कशीट स्वचालित रूप से बन जाती है। चार्ट वर्कशीट सभी प्रकार के चार्टों के लिए बनाई जाती है: लाइन चार्ट, बार चार्ट, सनबर्स्ट चार्ट, पाई चार्ट आदि। PowerPoint में चार्ट स्प्रेडशीट देखने के लिए आपको चार्ट पर डबल‑क्लिक करना चाहिए:

todo:image_alt_text

चार्ट स्प्रेडशीट में चार्ट तत्वों के नाम होते हैं (श्रेणी नाम: Category1, श्रृंखला नाम) और एक तालिका जिसमें इन श्रेणियों और श्रृंखलाओं के अनुरूप संख्यात्मक डेटा होते हैं। डिफ़ॉल्ट रूप से, जब आप नया चार्ट बनाते हैं - तो चार्ट स्प्रेडशीट डेटा डिफ़ॉल्ट डेटा के साथ सेट होते हैं। फिर आप वर्कशीट में स्प्रेडशीट डेटा को मैन्युअल रूप से बदल सकते हैं।

आमतौर पर, चार्ट जटिल डेटा (जैसे वित्तीय विश्लेषक, वैज्ञानिक विश्लेषक) प्रस्तुत करता है, जिसमें उन सेल्स की गणना अन्य सेल्स के मानों या अन्य गतिशील डेटा से की जाती है। सेल का मान मैन्युअली गणना करके उसे सेल में हार्ड‑कोड करने से भविष्य में इसे बदलना कठिन हो जाता है। यदि आप किसी निश्चित सेल का मान बदलते हैं, तो उस पर निर्भर सभी सेल्स भी अपडेट होने चाहिए। इसके अलावा, तालिका डेटा अन्य तालिकाओं के डेटा पर निर्भर हो सकता है, जिससे प्रस्तुति डेटा योजना जटिल हो जाती है और इसे आसान व लचीले तरीके से अपडेट करने की आवश्यकता होती है।

Chart spreadsheet formula प्रस्तुति में एक अभिव्यक्ति है जो चार्ट स्प्रेडशीट डेटा को स्वचालित रूप से गणना और अपडेट करती है। स्प्रेडशीट फ़ॉर्मूला किसी विशेष सेल या सेल सेट के लिए डेटा गणना तर्क को परिभाषित करता है। स्प्रेडशीट फ़ॉर्मूला एक गणितीय फ़ॉर्मूला या लॉजिकल फ़ॉर्मूला है, जो उपयोग करता है: सेल संदर्भ, गणितीय फ़ंक्शन, लॉजिक ऑपरेटर, अंकगणितीय ऑपरेटर, रूपांतरण फ़ंक्शन, स्ट्रिंग स्थिरांक आदि। फ़ॉर्मूला की परिभाषा एक सेल में लिखी जाती है, और यह सेल केवल साधारण मान नहीं रखता। स्प्रेडशीट फ़ॉर्मूला मान की गणना करता है और उसे वापस लौटाता है, फिर यह मान सेल को असाइन किया जाता है। प्रस्तुतियों में चार्ट स्प्रेडशीट फ़ॉर्मूले वास्तव में एक्सेल फ़ॉर्मूले के समान हैं, और उनके कार्यान्वयन के लिए वही डिफ़ॉल्ट फ़ंक्शन, ऑपरेटर और स्थिरांक समर्थित हैं।

Aspose.Slides में चार्ट स्प्रेडशीट को ChartData::getChartDataWorkbook मेथड द्वारा प्रस्तुत किया जाता है, जो कि ChartDataWorkbook प्रकार का है। स्प्रेडशीट फ़ॉर्मूला को ChartDataCell::setFormula मेथड के साथ असाइन और बदल सकते हैं। Aspose.Slides में फ़ॉर्मूलों के लिए निम्न कार्यक्षमता समर्थित है:

  • लॉजिकल स्थिरांक
  • संख्यात्मक स्थिरांक
  • स्ट्रिंग स्थिरांक
  • त्रुटि स्थिरांक
  • अंकगणितीय ऑपरेटर
  • तुलनात्मक ऑपरेटर
  • A1-शैली सेल रेफ़रेंसेज़
  • R1C1-शैली सेल रेफ़रेंसेज़
  • पूर्वनिर्धारित फ़ंक्शन

आमतौर पर स्प्रेडशीट अंतिम गणना किए गए फ़ॉर्मूला मानों को संग्रहीत करता है। यदि प्रस्तुति लोड करने के बाद चार्ट डेटा नहीं बदला गया है - ChartDataCell::getValue मेथड इन मानों को पढ़ते समय लौटाता है। लेकिन, यदि स्प्रेडशीट डेटा बदला गया है, तो मान पढ़ते समय यह CellUnsupportedDataException को असमर्थित फ़ॉर्मूलों के लिए थ्रो करता है। यह इसलिए है क्योंकि जब फ़ॉर्मूले सफलतापूर्वक पार्स हो जाते हैं, तो सेल निर्भरताएँ निर्धारित होती हैं और अंतिम मानों की शुद्धता तय होती है। लेकिन, यदि फ़ॉर्मूला पार्स नहीं हो सकता, तो सेल मान की शुद्धता की गारंटी नहीं दी जा सकती।

प्रस्तुति में चार्ट स्प्रेडशीट फ़ॉर्मूला जोड़ें

पहले, एक नई प्रस्तुति की पहली स्लाइड में ShapeCollection::addChart मेथड का उपयोग करके चार्ट जोड़ें। चार्ट की वर्कशीट स्वचालित रूप से बनती है और इसे ChartData::getChartDataWorkbook मेथड से एक्सेस किया जा सकता है:

  $pres = new Presentation();
  try {
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::ClusteredColumn, 150, 150, 500, 300);
    $workbook = $chart->getChartData()->getChartDataWorkbook();
    # ...
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

चलिये कुछ मान सेल्स में लिखते हैं ChartDataCell::setValue मेथड का उपयोग करके, जो Object प्रकार का है, अर्थात आप कोई भी मान सेट कर सकते हैं:

  $workbook->getCell(0, "F2")->setValue(-2.5);
  $workbook->getCell(0, "G3")->setValue(6.3);
  $workbook->getCell(0, "H4")->setValue(3);

अब सेल में फ़ॉर्मूला लिखने के लिए आप ChartDataCell::setFormula मेथड का उपयोग कर सकते हैं।

नोट: ChartDataCell::setFormula मेथड A1-शैली सेल रेफ़रेंसेज़ सेट करने के लिए उपयोग किया जाता है।

R1C1 शैली में फ़ॉर्मूला सेट करने के लिए आप ChartDataCell::setR1C1Formula मेथड का उपयोग कर सकते हैं।

फिर यदि आप B2 और C2 सेल्स के मान पढ़ने का प्रयास करेंगे, तो वे गणना किए जाएंगे:

  $value1 = $cell1->getValue();// 7.8

  $value2 = $cell2->getValue();// 2.1

लॉजिकल स्थिरांक

आप सेल फ़ॉर्मूले में FALSE और TRUE जैसे लॉजिकल स्थिरांक का उपयोग कर सकते हैं:

  $workbook->getCell(0, "A2")->setValue(false);
  $cell = $workbook->getCell(0, "B2");
  $cell->setFormula("A2 = TRUE");
  $value = $cell->getValue();// मान में बूलियन "false" है

संख्यात्मक स्थिरांक

संख्याओं का उपयोग सामान्य या वैज्ञानिक नोटेशन में करके चार्ट स्प्रेडशीट फ़ॉर्मूला बनाया जा सकता है:

  $workbook->getCell(0, "A2")->setFormula("1 + 0.5");
  $workbook->getCell(0, "B2")->setFormula(".3 * 1E-2");

स्ट्रिंग स्थिरांक

स्ट्रिंग (या लिटेरल) स्थिरांक वह विशिष्ट मान है जिसे जैसा है वैसे ही उपयोग किया जाता है और यह बदलता नहीं है। स्ट्रिंग स्थिरांक हो सकते हैं: तिथि, पाठ, संख्याएँ आदि:

  $workbook->getCell(0, "A2")->setFormula("\"abc\"");
  $workbook->getCell(0, "B2")->setFormula("\"2/3/2020 12:00\"");

त्रुटि स्थिरांक

कभी‑कभी फ़ॉर्मूला द्वारा परिणाम की गणना संभव नहीं होती। उस स्थिति में, सेल में उसके मान की जगह त्रुटि कोड दिखाया जाता है। प्रत्येक प्रकार की त्रुटि का एक विशिष्ट कोड होता है:

  • #DIV/0! - फ़ॉर्मूला शून्य से विभाजित करने की कोशिश करता है।
  • #GETTING_DATA - जब किसी सेल पर इसका मान अभी भी गणना में हो तो यह दिख सकता है।
  • #N/A - सूचना अनुपलब्ध या गायब है। कारण हो सकते हैं: फ़ॉर्मूला में प्रयुक्त सेल्स खाली हों, अतिरिक्त स्पेस अक्षर, वर्तनी त्रुटि आदि।
  • #NAME? - किसी सेल या अन्य फ़ॉर्मूला ऑब्जेक्ट को उसके नाम से नहीं पाया जा सकता।
  • #NULL! - तब प्रकट हो सकता है जब फ़ॉर्मूला में त्रुटि हो, जैसे: (,) या कोलन (:) की जगह स्पेस अक्षर उपयोग किया गया हो।
  • #NUM! - फ़ॉर्मूले में संख्यात्मक मान अवैध, बहुत बड़ा या बहुत छोटा हो सकता है, आदि।
  • #REF! - अवैध सेल रेफ़रेंस।
  • #VALUE! - अप्रत्याशित मान प्रकार। उदाहरण के लिए, स्ट्रिंग मान को संख्यात्मक सेल में सेट करना।
  $cell = $workbook->getCell(0, "A2");
  $cell->setFormula("2 / 0");
  $value = $cell->getValue();// मान में स्ट्रिंग "#DIV/0!" है

अंकगणितीय ऑपरेटर

ऑपरेटर अर्थ उदाहरण
+ (plus sign) जोड़ या यूनरी प्लस 2 + 3
- (minus sign) घटाव या नेगेशन 2 - 3
-3
* (asterisk) गुणा 2 * 3
/ (forward slash) भाग 2 / 3
% (percent sign) प्रतिशत 30%
^ (caret) घातांक 2 ^ 3

नोट: मूल्यांकन के क्रम को बदलने के लिए, सूत्र के उस भाग को कोष्ठक में रखें जिसे पहले गणना किया जाना चाहिए।

तुलनात्मक ऑपरेटर

ऑपरेटर अर्थ अर्थ
= (equal sign) समान A2 = 3
<> (not equal sign) असमान A2 <> 3
> (greater than sign) से बड़ा A2 > 3
>= (greater than or equal to sign) से बड़ा या बराबर A2 >= 3
< (less than sign) से छोटा A2 < 3
<= (less than or equal to sign) से छोटा या बराबर A2 <= 3

A1-शैली सेल रेफ़रेंसेज़

A1-शैली सेल रेफ़रेंसेज़ उन वर्कशीट्स के लिए उपयोग की जाती हैं, जहाँ कॉलम का पहचानकर्ता अक्षर (उदा. “A") और पंक्ति का पहचानकर्ता संख्या (उदा. “1") होता है। A1-शैली सेल रेफ़रेंसेज़ को निम्नलिखित तरीके से उपयोग किया जा सकता है:

सेल रेफ़रेंस उदाहरण
पूर्ण सापेक्ष मिश्रित
सेल $A$2 A2

A$2

$A2

Row $2:$2 2:2 -
Column $A:$A A:A -
रेंज $A$2:$C$4 A2:C4

$A$2:C4

A$2:$C4

यहाँ एक उदाहरण है कि कैसे फ़ॉर्मूले में A1-शैली सेल रेफ़रेंस का उपयोग किया जाए:

  $workbook->getCell(0, "A2")->setFormula("C3 + SUM(F2:H5)");

R1C1-शैली सेल रेफ़रेंसेज़

R1C1-शैली सेल रेफ़रेंसेज़ उन वर्कशीट्स के लिए उपयोग की जाती हैं, जहाँ पंक्ति और कॉलम दोनों का संख्यात्मक पहचानकर्ता होता है। R1C1-शैली सेल रेफ़रेंसेज़ को निम्नलिखित तरीके से उपयोग किया जा सकता है:

सेल रेफ़रेंस उदाहरण
पूर्ण सापेक्ष मिश्रित
सेल R2C3 R[2]C[3] R2C[3]
R[2]C3
Row R2 R[2] -
Column C3 C[3] -
रेंज R2C3:R5C7 R[2]C[3]:R[5]C[7] R2C3:R[5]C[7]
R[2]C3:R5C[7]

यहाँ एक उदाहरण है कि कैसे फ़ॉर्मूले में R1C1-शैली सेल रेफ़रेंस का उपयोग किया जाए:

  $workbook->getCell(0, "A2")->setR1C1Formula("R2C4 + SUM(R5C6:R7C9)");

पूर्वनिर्धारित फ़ंक्शन

फ़ॉर्मूलों में उपयोग के लिए पूर्वनिर्धारित फ़ंक्शन उपलब्ध हैं जो उनके कार्यान्वयन को सरल बनाते हैं। ये फ़ंक्शन सबसे सामान्य उपयोग किए जाने वाले ऑपरेशन को समेटते हैं, जैसे:

  • ABS
  • AVERAGE
  • CEILING
  • CHOOSE
  • CONCAT
  • CONCATENATE
  • DATE (1900 date system)
  • DAYS
  • FIND
  • FINDB
  • IF
  • INDEX (reference form)
  • LOOKUP (vector form)
  • MATCH (vector form)
  • MAX
  • SUM
  • VLOOKUP

अक्सर पूछे जाने वाले प्रश्न

क्या फ़ॉर्मूले वाले चार्ट के डेटा स्रोत के रूप में बाहरी Excel फ़ाइलें समर्थित हैं?
हाँ। Aspose.Slides बाहरी वर्कबुक को एक chart’s data source के रूप में समर्थन करता है, जिससे आप प्रस्तुति के बाहर की XLSX फ़ाइल से फ़ॉर्मूले उपयोग कर सकते हैं।

क्या चार्ट फ़ॉर्मूले एक ही वर्कबुक के भीतर शीट नाम से शीट्स को संदर्भित कर सकते हैं?
हाँ। फ़ॉर्मूले मानक Excel रेफ़रेंस मॉडल का पालन करते हैं, इसलिए आप एक ही वर्कबुक या बाहरी वर्कबुक में अन्य शीट्स को संदर्भित कर सकते हैं। बाहरी रेफ़रेंसेज़ के लिए, Excel सिंटैक्स का प्रयोग करके पथ और वर्कबुक नाम शामिल करें।