Độ bền dữ liệu - Mô-đun Openpyxl

Microsoft's Excel là ứng dụng bảng tính phổ biến nhất. Nó đã được sử dụng từ hơn 25 năm qua. Các phiên bản Excel sau này sử dụngOffice Open XML (OOXML) định dạng tệp. Do đó, có thể truy cập các tệp bảng tính thông qua các môi trường lập trình khác.

OOXMLlà định dạng tệp chuẩn ECMA. Python'sopenpyxl gói cung cấp chức năng đọc / ghi tệp Excel với phần mở rộng .xlsx.

Gói openpyxl sử dụng danh pháp lớp tương tự như thuật ngữ Microsoft Excel. Tài liệu Excel được gọi là sổ làm việc và được lưu với phần mở rộng .xlsx trong hệ thống tệp. Một sổ làm việc có thể có nhiều trang tính. Trang tính trình bày một lưới lớn các ô, mỗi ô có thể lưu trữ giá trị hoặc công thức. Các hàng và cột tạo thành lưới được đánh số. Các cột được xác định bằng bảng chữ cái, A, B, C,…., Z, AA, AB, v.v. Các hàng được đánh số bắt đầu từ 1.

Một bảng tính Excel điển hình xuất hiện như sau:

Tiện ích pip đủ tốt để cài đặt gói openpyxl.

pip install openpyxl

Lớp Workbook đại diện cho một sổ làm việc trống với một trang tính trống. Chúng tôi cần kích hoạt nó để có thể thêm một số dữ liệu vào trang tính.

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

Như chúng ta đã biết, một ô trong trang tính được đặt tên là định dạng ColumnNameRownumber. Theo đó, ô trên cùng bên trái là A1. Chúng tôi gán một chuỗi cho ô này là -

sheet1['A1']= 'Student List'

Ngoài ra, hãy sử dụng trang tính của cell()phương pháp sử dụng số hàng và cột để xác định một ô. Gọi thuộc tính giá trị đến đối tượng ô để gán giá trị.

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

Sau khi điền trang tính với dữ liệu, sổ làm việc được lưu bằng cách gọi phương thức save () của đối tượng sổ làm việc.

wb.save('Student.xlsx')

Tệp sổ làm việc này được tạo trong thư mục làm việc hiện tại.

Tập lệnh Python sau đây viết một danh sách các bộ giá trị vào một tài liệu sổ làm việc. Mỗi bộ lưu trữ số cuộn, tuổi và điểm của học sinh.

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')

Sổ làm việc student.xlsx được lưu trong thư mục làm việc hiện tại. Nếu được mở bằng ứng dụng Excel, nó sẽ xuất hiện như bên dưới:

Mô-đun openpyxl cung cấp load_workbook() chức năng giúp đọc lại dữ liệu trong tài liệu sổ làm việc.

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

Bây giờ bạn có thể truy cập giá trị của bất kỳ ô nào được chỉ định bởi số hàng và cột.

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

Thí dụ

Mã sau sẽ điền vào một danh sách với dữ liệu trang tính.

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)

Đầu ra

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

Một tính năng rất quan trọng của ứng dụng Excel là công thức. Để gán công thức cho một ô, hãy gán nó vào một chuỗi chứa cú pháp công thức của Excel. Gán hàm AVERAGE cho ô c6 có tuổi.

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

Mô-đun Openpyxl có Translate_formula()chức năng sao chép công thức trong một phạm vi. Chương trình sau định nghĩa hàm AVERAGE trong C6 và sao chép nó vào C7 để tính trung bình các điểm.

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')

Trang tính đã thay đổi bây giờ xuất hiện như sau: