데이터 지속성-Openpyxl 모듈

Microsoft의 Excel은 가장 널리 사용되는 스프레드 시트 응용 프로그램입니다. 지난 25 년 이상 사용되었습니다. 최신 버전의 Excel 사용Office Open XML (OOXML) 파일 형식. 따라서 다른 프로그래밍 환경을 통해 스프레드 시트 파일에 액세스 할 수있었습니다.

OOXMLECMA 표준 파일 형식입니다. 파이썬openpyxl 패키지는 확장명이 .xlsx 인 Excel 파일을 읽고 쓰는 기능을 제공합니다.

openpyxl 패키지는 Microsoft Excel 용어와 유사한 클래스 명명법을 사용합니다. Excel 문서는 통합 문서라고하며 파일 시스템에 .xlsx 확장자로 저장됩니다. 통합 문서에는 여러 워크 시트가있을 수 있습니다. 워크 시트에는 큰 셀 격자가 표시되며 각 셀은 값이나 수식을 저장할 수 있습니다. 그리드를 구성하는 행과 열은 번호가 매겨집니다. 열은 알파벳, A, B, C,…., Z, AA, AB 등으로 식별됩니다. 행은 1부터 번호가 매겨집니다.

일반적인 Excel 워크 시트는 다음과 같이 나타납니다.

pip 유틸리티는 openpyxl 패키지를 설치하기에 충분합니다.

pip install openpyxl

Workbook 클래스는 하나의 빈 워크 시트가있는 빈 통합 문서를 나타냅니다. 워크 시트에 일부 데이터를 추가 할 수 있도록 활성화해야합니다.

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의 수식 구문이 포함 된 문자열에 지정하십시오. 나이가있는 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')

이제 변경된 워크 시트가 다음과 같이 나타납니다.