डेटा की दृढ़ता - Openpyxl मॉड्यूल

Microsoft का एक्सेल सबसे लोकप्रिय स्प्रेडशीट एप्लिकेशन है। यह पिछले 25 से अधिक वर्षों से उपयोग में है। Excel के बाद के संस्करण उपयोग करते हैंOffice Open XML (OOXML) फ़ाइल स्वरूप। इसलिए, अन्य प्रोग्रामिंग वातावरणों के माध्यम से स्प्रेडशीट फाइलों तक पहुंचना संभव हो गया है।

OOXMLएक ECMA मानक फ़ाइल स्वरूप है। पायथन केopenpyxl पैकेज .xlsx एक्सटेंशन के साथ एक्सेल फाइल को पढ़ने / लिखने के लिए कार्यक्षमता प्रदान करता है।

Openpyxl पैकेज वर्ग नामकरण का उपयोग करता है जो Microsoft Excel शब्दावली के समान है। एक Excel दस्तावेज़ को कार्यपुस्तिका के रूप में कहा जाता है और इसे फ़ाइल सिस्टम में .xlsx एक्सटेंशन के साथ सहेजा जाता है। एक कार्यपुस्तिका में कई कार्यपत्रक हो सकते हैं। एक वर्कशीट कोशिकाओं का एक बड़ा ग्रिड प्रस्तुत करता है, उनमें से प्रत्येक मूल्य या सूत्र को संग्रहीत कर सकता है। ग्रिड बनाने वाले पंक्तियों और स्तंभों को गिना जाता है। कॉलम की पहचान अल्फाबेट्स, ए, बी, सी,…।, जेड, एए, एबी और इसी तरह से की जाती है। पंक्तियों को 1 से शुरू किया गया है।

एक विशिष्ट एक्सेल वर्कशीट निम्नानुसार दिखाई देती है -

Openpyxl पैकेज को स्थापित करने के लिए पाइप उपयोगिता काफी अच्छी है।

pip install openpyxl

कार्यपुस्तिका वर्ग एक रिक्त कार्यपुस्तिका के साथ एक रिक्त कार्यपुस्तिका का प्रतिनिधित्व करता है। हमें इसे सक्रिय करने की आवश्यकता है ताकि कुछ डेटा को वर्कशीट में जोड़ा जा सके।

from openpyxl import Workbook
wb=Workbook()
sheet1=wb.active
sheet1.title='StudentList'

जैसा कि हम जानते हैं, वर्कशीट में एक सेल का नाम ColumnNameRownumber प्रारूप है। इस हिसाब से टॉप लेफ्ट सेल A1 है। हम इस सेल को एक स्ट्रिंग प्रदान करते हैं -

sheet1['A1']= 'Student List'

वैकल्पिक रूप से, वर्कशीट का उपयोग करें cell()विधि जो सेल की पहचान करने के लिए पंक्ति और स्तंभ संख्या का उपयोग करती है। वैल्यू असाइन करने के लिए सेल ऑब्जेक्ट को वैल्यू प्रॉपर्टी कहें।

cell1=sheet1.cell(row=1, column=1)
cell1.value='Student List'

कार्यपत्रक को डेटा के साथ पॉप्युलेट करने के बाद, कार्यपुस्तिका ऑब्जेक्ट की सेव () विधि को कॉल करके सेव की जाती है।

wb.save('Student.xlsx')

यह कार्यपुस्तिका फ़ाइल वर्तमान कार्यशील निर्देशिका में बनाई गई है।

पायथन लिपि के बाद कार्यपुस्तिका दस्तावेज़ में ट्यूल की सूची लिखती है। प्रत्येक टपल स्टोर में छात्र की संख्या, उम्र और निशान होते हैं।

from openpyxl import Workbook
wb = Workbook()
sheet1 = wb.active
sheet1.title='Student List'
sheet1.cell(column=1, row=1).value='Student List'
studentlist=[('RollNo','Name', 'age', 'marks'),(1,'Juhi',20,100), 
   (2,'dilip',20, 110) , (3,'jeevan',24,145)]
for col in range(1,5):
   for row in range(1,5):
      sheet1.cell(column=col, row=1+row).value=studentlist[row-1][col-1]
wb.save('students.xlsx')

कार्यपुस्तिका students.xlsx को वर्तमान कार्यशील निर्देशिका में सहेजा गया है। यदि एक्सेल एप्लिकेशन का उपयोग करके खोला जाता है, तो यह नीचे दिया गया है -

Openpyxl मॉड्यूल प्रदान करता है load_workbook() फ़ंक्शन जो कार्यपुस्तिका दस्तावेज़ में डेटा वापस पढ़ने में मदद करता है।

from openpyxl import load_workbook
wb=load_workbook('students.xlsx')

अब आप पंक्ति और स्तंभ संख्या द्वारा निर्दिष्ट किसी भी सेल का मान एक्सेस कर सकते हैं।

cell1=sheet1.cell(row=1, column=1)
print (cell1.value)
Student List

उदाहरण

निम्नलिखित कोड कार्य पत्रक डेटा के साथ एक सूची पॉप्युलेट करता है।

from openpyxl import load_workbook
wb=load_workbook('students.xlsx')
sheet1 = wb['Student List']
studentlist=[]
for row in range(1,5):
   stud=[]
for col in range(1,5):
   val=sheet1.cell(column=col, row=1+row).value
stud.append(val)
studentlist.append(tuple(stud))
print (studentlist)

उत्पादन

[('RollNo', 'Name', 'age', 'marks'), (1, 'Juhi', 20, 100), (2, 'dilip', 20, 110), (3, 'jeevan', 24, 145)]

एक्सेल एप्लिकेशन की एक बहुत ही महत्वपूर्ण विशेषता सूत्र है। सेल को सूत्र प्रदान करने के लिए, इसे एक्सेल के सूत्र सिंटैक्स वाले स्ट्रिंग में असाइन करें। C6 सेल आयु होने पर AVERAGE फ़ंक्शन असाइन करें।

sheet1['C6']= 'AVERAGE(C3:C5)'

Openpyxl मॉड्यूल है Translate_formula()एक सीमा के दौरान सूत्र की प्रतिलिपि बनाने के लिए फ़ंक्शन। निम्नलिखित कार्यक्रम C6 में AVERAGE फ़ंक्शन को परिभाषित करता है और इसे C7 में कॉपी करता है जो औसत अंकों की गणना करता है।

from openpyxl import load_workbook
wb=load_workbook('students.xlsx')

sheet1 = wb['Student List']
from openpyxl.formula.translate import Translator#copy formula
sheet1['B6']='Average'
sheet1['C6']='=AVERAGE(C3:C5)'
sheet1['D6'] = Translator('=AVERAGE(C3:C5)', origin="C6").translate_formula("D6")
wb.save('students.xlsx')

अब परिवर्तित वर्कशीट इस प्रकार दिखाई देती है -