판매 실적 데이터를 워드 문서로 자동화하기
이전 수업에서 불러온 엑셀 데이터를 바탕으로 워드 문서
를 작성해 보겠습니다.
실습 코드를 실행하면 python-docx
라이브러리를 활용해 판매 실적 데이터를 문서 내 표로 변환하고, 워드 문서로 저장합니다.
python-docx로 워드 문서 만들기
실습 코드는 다음과 같이 6단계로 동작합니다.
1. 필요한 라이브러리 불러오기
import openpyxl # 엑셀 파일을 다루는 라이브러리
from docx import Document # python-docx 라이브러리
-
openpyxl
: 엑셀 파일을 읽고 수정할 수 있도록 돕는 라이브러리입니다. -
Document
: 워드 문서를 생성하고, 내용을 추가하거나 수정할 수 있는 클래스입니다.
2. 엑셀 파일 불러오기
wb = openpyxl.load_workbook('input_file.xlsx') # 엑셀 파일을 불러옵니다.
sheet = wb.active # 현재 활성화된 시트를 가져옵니다.
-
openpyxl.load_workbook('input_file.xlsx')
: 엑셀 파일을 열고 데이터를 사용할 수 있도록 불러옵니다. -
wb.active
: 불러온 엑셀 파일에서 현재 활성화된 시트(첫 번째 시트)를 가져옵니다.
3. 워드 문서 생성
doc = Document() # 새 워드 문서를 생성합니다.
Document()
: 새로운 워드 문서를 만듭니다. 여기에 데이터를 추가해 나갈 예정입니다.
4. 보고서 제목 추가
doc.add_heading('2024년 1분기 판매 실적 보고서', 0)
doc.add_heading
: 워드 문서에 제목을 추가하는 코드입니다. '2024년 1분기 판매 실적 보고서'라는 제목을 추가하고,0
은 가장 큰 제목 크기입니다.
5. 표 생성 및 열 제목 설정
table = doc.add_table(rows=1, cols=5) # 1행 5열로 구성된 표를 만듭니다.
table.style = 'Table Grid' # 표에 테두리 스타일을 추가합니다.
# 첫 번째 행(열 제목)을 설정합니다.
hdr_cells = table.rows[0].cells
hdr_cells[0].text = '월'
hdr_cells[1].text = '제품'
hdr_cells[2].text = '판매량'
hdr_cells[3].text = '객단가'
hdr_cells[4].text = '매출'
-
doc.add_table(rows=1, cols=5)
: 1행 5열로 구성된 표를 워드 문서에 추가합니다. 첫 번째 행은 열 제목을 위한 행입니다. -
table.style = 'Table Grid'
: 표에 Table Grid라는 실선 테두리 스타일을 설정하여 표를 깔끔하게 만듭니다. -
hdr_cells
: 첫 번째 행의 각 셀을 지정하고, '월', '제품', '판매량', '객단가', '매출'이라는 제목을 추가합니다.
6. 엑셀 데이터 추가 및 워드 문서 저장
# 2번째 줄부터 데이터를 읽습니다.
for row in sheet.iter_rows(min_row=2, values_only=True):
month, product, sales, price, revenue = row # 각 열의 데이터를 변수로 저장합니다.
# 새로운 행을 표에 추가합니다.
row_cells = table.add_row().cells
row_cells[0].text = str(month) # '월' 데이터를 텍스트로 변환하여 추가
row_cells[1].text = product # '제품' 데이터를 추가
row_cells[2].text = str(sales) # '판매량' 데이터를 텍스트로 변환하여 추가
row_cells[3].text = str(price) # '객단가' 데이터를 텍스트로 변환하여 추가
row_cells[4].text = str(revenue) # '매출' 데이터를 텍스트로 변환하여 추가
# 워드 문서를 'output_file.docx'라는 이름으로 저장합니다.
doc.save('output_file.docx')
-
sheet.iter_rows(min_row=2, values_only=True)
: 엑셀 파일의 두 번째 줄부터 데이터를 읽어옵니다.values_only=True
로 설정하면, 셀의 값만 가져옵니다. -
각 변수(month, product, sales, price, revenue): 각각의 열 데이터를 변수로 저장합니다.
-
table.add_row()
: 새로운 행을 표에 추가하고, 엑셀에서 읽어온 데이터를 그 행에 넣습니다. -
doc.save('output_file.docx')
: 최종적으로 워드 문서를'output_file.docx'
라는 이름으로 저장합니다.
워드 문서로 출력되는 결과
이 코드가 실행되면, 워드 문서에 다음과 같은 표가 생성됩니다.
월 | 제품 | 판매량 | 객단가 | 매출 |
---|---|---|---|---|
1월 | 카메라 | 50 | 500,000 | 25,000,000 |
1월 | 컴퓨터 | 30 | 1,200,000 | 36,000,000 |
1월 | 스마트폰 | 100 | 900,000 | 90,000,000 |
2월 | 카메라 | 45 | 480,000 | 21,600,000 |
2월 | 컴퓨터 | 35 | 1,150,000 | 40,250,000 |
2월 | 스마트폰 | 90 | 850,000 | 76,500,000 |
3월 | 카메라 | 40 | 470,000 | 18,800,000 |
3월 | 컴퓨터 | 40 | 1,100,000 | 44,000,000 |
3월 | 스마트폰 | 95 | 800,000 | 76,000,000 |
다음 내용이 궁금하다면?
코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!