Persistensi Data - Modul Openpyxl

Microsoft Excel adalah aplikasi spreadsheet paling populer. Telah digunakan sejak lebih dari 25 tahun terakhir. Versi Excel yang lebih baru digunakanOffice Open XML (OOXML) format file. Oleh karena itu, dimungkinkan untuk mengakses file spreadsheet melalui lingkungan pemrograman lain.

OOXMLadalah format file standar ECMA. Pythonopenpyxl paket menyediakan fungsionalitas untuk membaca / menulis file Excel dengan ekstensi .xlsx.

Paket openpyxl menggunakan nomenklatur kelas yang mirip dengan terminologi Microsoft Excel. Dokumen Excel disebut sebagai buku kerja dan disimpan dengan ekstensi .xlsx dalam sistem file. Sebuah buku kerja mungkin memiliki beberapa lembar kerja. Lembar kerja menyajikan kisi sel yang besar, masing-masing sel dapat menyimpan nilai atau rumus. Baris dan kolom yang membentuk kisi diberi nomor. Kolom diidentifikasi dengan huruf, A, B, C,…., Z, AA, AB, dan seterusnya. Baris diberi nomor mulai dari 1.

Lembar kerja Excel yang khas muncul sebagai berikut -

Utilitas pip cukup baik untuk menginstal paket openpyxl.

pip install openpyxl

Kelas Buku Kerja mewakili buku kerja kosong dengan satu lembar kerja kosong. Kita perlu mengaktifkannya agar beberapa data bisa ditambahkan ke lembar kerja.

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

Seperti yang kita ketahui, sel di lembar kerja dinamai format ColumnNameRownumber. Dengan demikian, sel kiri atas adalah A1. Kami menetapkan string ke sel ini sebagai -

sheet1['A1']= 'Student List'

Bergantian, gunakan lembar kerja cell()metode yang menggunakan nomor baris dan kolom untuk mengidentifikasi sel. Panggil properti nilai ke objek sel untuk menetapkan nilai.

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

Setelah mengisi lembar kerja dengan data, buku kerja disimpan dengan memanggil metode save () dari objek buku kerja.

wb.save('Student.xlsx')

File buku kerja ini dibuat di direktori kerja saat ini.

Mengikuti skrip Python menulis daftar tupel ke dalam dokumen buku kerja. Setiap tupel menyimpan nomor gulungan, usia dan nilai siswa.

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

Buku kerja students.xlsx disimpan di direktori kerja saat ini. Jika dibuka menggunakan aplikasi Excel, akan muncul seperti di bawah ini -

Modul openpyxl menawarkan load_workbook() fungsi yang membantu dalam membaca kembali data dalam dokumen buku kerja.

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

Anda sekarang dapat mengakses nilai sel apa pun yang ditentukan oleh nomor baris dan kolom.

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

Contoh

Kode berikut mengisi daftar dengan data lembar kerja.

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)

Keluaran

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

Salah satu fitur yang sangat penting dari aplikasi Excel adalah rumusnya. Untuk menetapkan rumus ke sel, tetapkan ke string yang berisi sintaks rumus Excel. Tetapkan fungsi AVERAGE ke sel c6 yang memiliki usia.

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

Modul Openpyxl memiliki Translate_formula()berfungsi untuk menyalin rumus di seluruh rentang. Program berikut mendefinisikan fungsi AVERAGE di C6 dan menyalinnya ke C7 yang menghitung nilai rata-rata.

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

Lembar kerja yang diubah sekarang muncul sebagai berikut -