목차
데이터 분석에서 엑셀은 강력한 도구로 자리 잡아 왔습니다. 파이썬에서 엑셀 파일을 읽고 쓰는 데 사용할 수 있는 여러 패키지가 있지만, 그 중에서도 openpyxl은 그 기능과 사용법의 쉬움으로 인해 널리 사용되고 있습니다.
openpyxl이란?
openpyxl은 파이썬에서 엑셀 2010 이상의 xlsx/xlsm/xltx/xltm 파일을 읽고 쓰는 데 사용되는 라이브러리입니다. 이 라이브러리를 사용하면 파이썬 코드를 통해 엑셀 문서를 생성하고, 데이터를 입력하고, 서식을 지정하고, 그림이나 차트를 추가하는 등의 작업을 할 수 있습니다.
openpyxl로 할 수 있는 일
openpyxl은 엑셀 파일을 작업하기 위한 광범위한 기능을 제공합니다. 여기에는 다음과 같은 작업들이 포함됩니다:
- 엑셀 문서 읽기 및 쓰기
- 셀에 값 입력하기
- 셀 서식 지정하기
- 셀 병합 및 분할하기
- 행과 열 추가/삭제하기
- 그림, 차트, 공식 등 추가하기
이제 이러한 기능들을 어떻게 사용하는지 몇 가지 예를 통해 알아보겠습니다.
openpyxl 사용 예
먼저 openpyxl을 사용하기 위해서는 다음과 같이 openpyxl 패키지를 import해야 합니다.
from openpyxl import Workbook, load_workbook
1. 엑셀 문서 읽기 및 쓰기
openpyxl을 사용하면 새로운 엑셀 문서를 생성하거나 기존 문서를 불러올 수 있습니다. 새로운 엑셀 문서를 생성하려면 `Workbook()` 함수를 사용하면 되고, 기존 문서를 불러오려면 `load_workbook()` 함수를 사용하면 됩니다.
# 새로운 엑셀 문서 생성하기
wb = Workbook()
# 기존 엑셀 문서 불러오기
wb = load_workbook('example.xlsx')
2. 셀에 값 입력하기
엑셀 문서의 셀에 값을 입력하려면 `cell()` 함수를 사용하면 됩니다. 이 함수는 행과 열의 위치를 인수로 받아 해당 위치의 셀을 반환합니다. 그런 다음, 이 셀의 `value` 속성을 설정하여 셀에 값을 입력할 수 있습니다.
ws = wb.active
ws.cell(row=1, column=1, value='Hello, openpyxl!')
row=1, column=1은 a행 1열, 즉 a1셀을 의미합니다.
3. 셀 서식 지정하기
openpyxl을 사용하면 셀의 서식을 지정하는 것도 가능합니다. 예를 들어, 셀의 테두리를 설정하려면 `Border` 클래스와 `Side` 클래스를 사용할 수 있습니다.
from openpyxl.styles import Border, Side
thin_border = Border(left=Side(style='thin'), right=Side(style='thin'), top=Side(style='thin'), bottom=Side(style='thin'))
ws['A1'].border = thin_border
4. 셀 병합 및 분할하기
`merge_cells()` 함수를 사용하면 지정한 범위의 셀을 병합할 수 있습니다. 반대로, `unmerge_cells()` 함수를 사용하면 병합된 셀을 다시 분할할 수 있습니다.
# 셀 병합하기
ws.merge_cells('A1:B2')
# 셀 분할하기
ws.unmerge_cells('A1:B2')
5. 엑셀 문서 저장하기
작업이 끝나면 `save()` 함수를 사용하여 엑셀 문서를 저장할 수 있습니다.
아래처럼 example.xlsx을 넣어주면 이것을 이름으로 해서 파일을 저장해줍니다.
wb.save('example.xlsx')
저장 되는 위치는 현재 경로라서 별도로 경로를 바꿔주고 싶다면,
wb.save('/Users/davi/Documents/GitHub/python_study/example.xlsx')
과 같이 경로까지 더 상세하게 잡아주면 됩니다.
그외의 더 자세한 내용은 공식 문서 참조하셔도 좋을 것 같습니다.
아래 링크는 공식 문서에서 차트 관련 내용이 있는 페이지로 걸어놨습니다.
차트 추가 등 > https://openpyxl.readthedocs.io/en/stable/charts/introduction.html
'파이썬 > 파이썬 스터디' 카테고리의 다른 글
파이썬 pandas(판다스) groupby - 시간에 따라 묶기 (0) | 2024.08.04 |
---|---|
반복문으로 df 내의 모든 행의 값 텍스트로 적어주기 - iterrows (0) | 2023.05.12 |
맥 아나콘다 설치 및 가상환경 설정 가이드: 무료 버전 사용 방법 및 터미널, 네이게이터 활용법 (0) | 2023.04.16 |
파이썬을 이용한 구글 스프레드시트 연동 및 자동화 방법 (4) | 2023.04.12 |
파이썬 각종 db 연결(sqlalchemy, pymysql) (0) | 2023.03.29 |
댓글