Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬으로 엑셀 자동화하기: openpyxl · xlwt · xlsxwriter 완벽 가이드


엑셀(Excel)은 전 세계에서 가장 널리 쓰이는 스프레드시트 프로그램으로, 거의 모든 컴퓨터 사용자가 스프레드시트를 통해 데이터를 관리하는 방식에 익숙합니다. 그만큼 실제 개발 현장에서도 파이썬 프로그램이 엑셀 파일과 상호작용해야 하는 경우가 매우 많습니다. 다행히 파이썬에는 엑셀 파일을 생성하고 읽고 쓸 수 있는 다양한 라이브러리가 준비되어 있는데요. 이 글에서는 가장 많이 사용되는 세 가지 라이브러리인 openpyxl, xlwt, xlsxwriter의 사용법을 예제와 함께 살펴보겠습니다. 먼저 아래 명령어로 필요한 라이브러리를 설치합니다.

pip install openpyxl xlwt xlsxwriter

openpyxl로 xlsx 파일 다루기

openpyxl은 Excel 2010 이상의 xlsx/xlsm/xltx/xltm 형식 파일을 읽고 쓸 수 있는 라이브러리입니다. 아래 예제에서는 새로운 엑셀 워크북을 만들고, 셀에 데이터를 직접 할당한 뒤 원하는 경로에 파일로 저장하는 과정을 보여줍니다. 모듈에는 이러한 작업을 돕는 다양한 내장 메서드가 포함되어 있습니다.

예제

# openpyxl
from openpyxl import Workbook
Spreadsheet = Workbook()

# 활성 워크시트 가져오기
worksheet = Spreadsheet.active

# 셀에 직접 데이터 할당
worksheet['A1'] = 50

# 행 단위로 데이터를 추가할 수도 있습니다
worksheet.append([5, 15, 25, 35, 45, 55])
worksheet.append([9, 19, 29, 39, 49, 59])

# 파이썬 자료형은 자동으로 변환됩니다
import datetime
t1 = datetime.datetime.now()
worksheet['A1'] = t1.year
worksheet['A2'] = t1

# 파일 저장
Spreadsheet.save('E:/openpyxl.xlsx')

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다 −

파이썬으로 엑셀 자동화하기: openpyxl · xlwt · xlsxwriter 완벽 가이드

xlwt로 구버전 xls 파일 생성하기

xlwt는 Microsoft Excel 95~2003 버전과 호환되는 스프레드시트 파일(.xls)을 생성하기 위한 라이브러리입니다. 단순히 셀에 값을 쓰는 것뿐만 아니라 서식 지정도 가능합니다. 값을 굵게 표시하거나 색상을 입히고 기울임체로 바꾸는 등의 스타일 적용이 가능하며, 글꼴 크기도 자유롭게 조절할 수 있습니다. 아래 예제에서는 작성된 숫자에 천 단위 구분 기호가 포함된 숫자 서식을 적용하고, Times New Roman 굵은 파란색 글씨로 표시해 보겠습니다.

예제

import xlwt
from datetime import datetime

Spreadsheet = xlwt.Workbook()
worksheet = Spreadsheet.add_sheet('Newsheet1')

format1 = xlwt.easyxf('font: name Times New Roman, color-index blue, bold on', num_format_str='#,##0.00')
format2 = xlwt.easyxf(num_format_str='D-MMM-YY')

worksheet.write(0, 0, datetime.now(), format2)
worksheet.write(0, 1, datetime.now().strftime('%B'), format2)
worksheet.write(0, 2, datetime.now().strftime('%A'), format2)
worksheet.write(1, 0, 5369.2, format1)
worksheet.write(1, 1, 1926.5, format1)
worksheet.write(1, 2, 4896.2, format1)
worksheet.write(2, 0, 5)
worksheet.write(2, 1, 10)
worksheet.write(2, 2, xlwt.Formula('A3+B3'))
Spreadsheet.save('E:/xlwt_spreadsheet.xls')

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다 −

파이썬으로 엑셀 자동화하기: openpyxl · xlwt · xlsxwriter 완벽 가이드

xlsxwriter로 고기능 엑셀 파일 만들기

xlsxwriter는 Excel 2007 형식(.xlsx)의 파일을 생성할 수 있는 모듈로, 앞서 소개한 라이브러리들보다 훨씬 다양한 기능을 제공합니다. 여러 워크시트에 텍스트, 숫자, 수식, 하이퍼링크를 작성할 수 있을 뿐만 아니라 차트나 이미지 삽입까지 지원합니다. 아래 예제에서는 시트 안의 텍스트에 서식을 지정하는 동시에 이미지도 함께 삽입해 보겠습니다.

예제

import xlsxwriter
Spreadsheet = xlsxwriter.Workbook('E:/xlsxw_spreadsheet.xlsx')
sheet = Spreadsheet.add_worksheet()
sheet.set_column('A:A', 18)

# 셀을 강조하기 위한 굵은 글씨 서식 추가
bold = Spreadsheet.add_format({'bold': True})

# 일반 텍스트 입력
sheet.write('A1', 'Freelancer', bold)
sheet.write('A2', 'Work')
sheet.write('A3', 100)
sheet.write('A4', 1000)

sheet.write('B1', 'DECIMAL', bold)
sheet.write('B2', 17.1)
sheet.write('B3', 29.6)
sheet.write('B4', 45.9)

sheet.write('C1', 'POSITIVE', bold)
sheet.write('C2', 69)
sheet.write('C3', 53)
sheet.write('C4', 36)

sheet.write('D1', 'NEGATIVE', bold)
sheet.write('D2', -89)
sheet.write('D3', -26)
sheet.write('D4', -15)

# 이미지 삽입
sheet.insert_image('E5', 'E:/firefox.JPG')
Spreadsheet.close()

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다 −

파이썬으로 엑셀 자동화하기: openpyxl · xlwt · xlsxwriter 완벽 가이드

마무리: 어떤 라이브러리를 선택해야 할까?

세 라이브러리는 지원하는 파일 형식과 제공하는 기능에서 차이가 있습니다. 최신 .xlsx 파일을 읽고 써야 한다면 openpyxl, 구버전 .xls 파일을 생성해야 한다면 xlwt, 차트·이미지 등 풍부한 기능이 필요한 .xlsx 파일을 새로 만들어야 한다면 xlsxwriter가 적합합니다. 참고로 구버전 .xls 파일을 읽어 들일 때는 별도의 xlrd 라이브러리를 함께 사용할 수 있습니다. 프로젝트의 요구 사항에 맞는 라이브러리를 선택하면 반복적인 엑셀 작업을 손쉽게 자동화할 수 있습니다.