ความคงอยู่ของข้อมูล - โมดูล Openpyxl
Excel ของ Microsoft เป็นแอปพลิเคชันสเปรดชีตที่ได้รับความนิยมมากที่สุด มีการใช้งานมานานกว่า 25 ปี ใช้ Excel เวอร์ชันใหม่กว่าOffice Open XML (OOXML) รูปแบบไฟล์ ดังนั้นจึงสามารถเข้าถึงไฟล์สเปรดชีตผ่านสภาพแวดล้อมการเขียนโปรแกรมอื่น ๆ ได้
OOXMLเป็นรูปแบบไฟล์มาตรฐาน ECMA Python ของopenpyxl แพคเกจมีฟังก์ชันในการอ่าน / เขียนไฟล์ Excel ที่มีนามสกุล. xlsx
แพคเกจ openpyxl ใช้ระบบการตั้งชื่อคลาสที่คล้ายกับคำศัพท์ของ Microsoft Excel เอกสาร Excel เรียกว่าเป็นสมุดงานและบันทึกด้วยนามสกุล. xlsx ในระบบไฟล์ สมุดงานอาจมีหลายแผ่นงาน เวิร์กชีตแสดงตารางเซลล์ขนาดใหญ่แต่ละเซลล์สามารถจัดเก็บค่าหรือสูตรได้ แถวและคอลัมน์ที่สร้างตารางจะมีหมายเลขกำกับ คอลัมน์ถูกระบุด้วยตัวอักษร A, B, C, …., Z, AA, AB และอื่น ๆ แถวจะมีหมายเลขเริ่มจาก 1
แผ่นงาน Excel ทั่วไปจะปรากฏดังนี้ -
ยูทิลิตี้ pip นั้นดีพอที่จะติดตั้งแพ็คเกจ 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'
หลังจากเติมข้อมูลในแผ่นงานแล้วสมุดงานจะถูกบันทึกโดยเรียกใช้เมธอด save () ของวัตถุในสมุดงาน
wb.save('Student.xlsx')
ไฟล์สมุดงานนี้สร้างขึ้นในไดเร็กทอรีการทำงานปัจจุบัน
ตามสคริปต์ Python จะเขียนรายการสิ่งที่เพิ่มลงในเอกสารสมุดงาน ทูเปิลแต่ละตัวเก็บหมายเลขม้วนอายุและเครื่องหมายของนักเรียน
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 ถูกบันทึกไว้ในไดเร็กทอรีการทำงานปัจจุบัน หากเปิดโดยใช้แอปพลิเคชัน Excel จะปรากฏดังต่อไปนี้ -
โมดูล 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)]
คุณสมบัติที่สำคัญอย่างหนึ่งของแอปพลิเคชัน Excel คือสูตร ในการกำหนดสูตรให้กับเซลล์ให้กำหนดเป็นสตริงที่มีไวยากรณ์ของสูตรของ Excel กำหนดฟังก์ชัน AVERAGE ให้กับเซลล์ c6 ที่มีอายุ
sheet1['C6']= 'AVERAGE(C3:C5)'
โมดูล Openpyxl มี Translate_formula()เพื่อคัดลอกสูตรข้ามช่วง โปรแกรมต่อไปนี้กำหนดฟังก์ชัน AVERAGE ใน C6 และคัดลอกไปยัง 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')
ตอนนี้แผ่นงานที่เปลี่ยนแปลงจะปรากฏดังนี้ -