openpyxl
openpyxl.readthedocs.io/en/stable/
Excel 파일을 읽고 쓸 수 있는 대표적인 라이브러리라고 한다
설치는 여느 때와 마찬가지로 pip(또는 pip3)를 사용한다
pip install openpyxl
간단하게 테스트해보았다
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
ws['A1'] = 'Hello'
wb.save('test.xlsx')
wb은 당연히 Workbook의 약자로 파일 그 자체를 의미하는 것 같다
ws는 worksheet의 약자로 엑셀의 Sheet를 의미한다
wb.active는 아마 현재 사용중인(활성화된) sheet인것 같은데
처음 파일 생성시에는 하나 밖에 없으니 생각할 필요 없을 것 같다
다만 파일이 엑셀로 열려있다면 Permission denied 가 뜬다
Sheet 다루기
Sheet 생성
새로운 시트를 만들때는 create_sheet()를 사용한다
이름이 같으면 또 만들어지지 않는 것 같다
ws1 = wb.create_sheet("test1")
ws2 = wb.create_sheet("test2")
ws3 = wb.create_sheet("test3")
또한 이름 뒤에 숫자(index)를 추가하여 순서를 정할 수 도 있다
ws4 = wb.create_sheet("test3",0)
시험삼아 test3라는 이름의 sheet를 0번째에 추가해 보았다
이번엔 또 새로 만들어졌다
그럼 index를 동일하게 해보자
ws4 = wb.create_sheet("test3",4)
이번에도 새로 생겼다
index를 인자로 넣으면 새로 만들어지는 건가...
또한 sheet의 이름을 바꿀수도 있다
ws.title = "New Title"
Sheet 복사
ws = wb.active
ws1 = wb.copy_worksheet(ws)
현재 선택된 worksheet를 복제한다
파이썬의 특성상 같은 변수명은 통하지 않고 title로 해야하는듯 하다
Sheet 삭제
wb.remove(ws)
ws를 삭제한다
Tutorial에는 sheet의 탭 배경색을 변경하거나 파일의 모든 sheet 이름을 출력하거나 title를 부여했을 때 접근법 등이
추가로 나와있다
Cell 다루기
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
ws['A4'] = "This is A4"
a = ws['A4']
b = ws.cell(row=4, column=3, value = "(4,3)")
wb.save('test.xlsx')
print(a)
print(a.value)
cell에 접근하는 방법은 두가지로
ws['A4']로 직접 접근하는 것과 ws.cell를 이용하여 간접적으로 접근할 수 있다
간단한 코드니 크게 설명할 건 없다
cell_range = ws['A1':'C2']
print(cell_range)
위와 같이 여러 cell를 한번에 접근할 수도 있다
또는 아래와 같이 for문을 이용할 수도 있다
for row in ws.iter_rows(min_row=1, max_col=3, max_row=2):
for cell in row:
print(cell)
iter는 반복하다는 뜻을 가진 iterate의 약자인것 같다
위 코드에서 max_row=2 뒤에 ,values_only=True를 추가하면 Cell의 값에 접근할 수 있다
아래 코드는 값을 가지고 있는 모든 cell의 값을 출력하는 코드이다.
for row in ws.values:
for value in row:
print(value)
불러오기
지금까지 저장이 안되는 건가 했는데 코드가 바뀔 때마다 파일을 저장한게 아니라 덮어쓰기를 통해서 사용되었다
실행할 때마다 새로운 파일을 만든다음 기존파일을 바꿔치기한 것과 같다
코드로 입력했던 값을 나중에도 다시 불러올려면 아래와 같이 사용한다
from openpyxl import load_workbook
wb = load_workbook('test.xlsx')
처음에는 파일이름이 없을 수 있으니 try except 등을 이용하여 오류를 해결하면 될 듯 하다
아까 사용했던 모든 cell의 값을 불러와보면 아래와 같다
이로서 공식문서에 있는 Tutorial를 대충 따라해보았다
만들 때 막히면 다시 읽어봐야지...
'작업일지 > Discord.py' 카테고리의 다른 글
디스코드 봇 만들기 - 탈퇴 (0) | 2021.03.10 |
---|---|
디스코드 봇 만들기 - 로직 개선 (0) | 2021.03.04 |
디스코드 봇 만들기 - 멘션기능 (0) | 2021.03.01 |
디스코드 봇 만들기 - youtube_dl (0) | 2021.01.27 |
디스코드 봇 만들기 - 하이퍼링크 (0) | 2021.01.13 |