본문으로 건너뛰기
실습하기

판매 실적 데이터를 워드 문서로 자동화하기

이전 수업에서 불러온 엑셀 데이터를 바탕으로 워드 문서를 작성해 보겠습니다.

실습 코드를 실행하면 python-docx 라이브러리는 사용해 판매 실적 데이터를 문서 내 표로 변환하고, 워드 문서로 저장합니다.


python-docx로 워드 문서 만들기

실습 코드는 다음과 같이 6단계로 동작합니다.


1. 필요한 라이브러리 불러오기

openpyxl 및 python-docx 라이브러리 불러오기
import openpyxl  # 엑셀 파일을 다루는 라이브러리
from docx import Document # python-docx 라이브러리
  • openpyxl: 엑셀 파일을 읽고 수정할 수 있도록 돕는 라이브러리입니다.

  • Document: 워드 문서를 생성하고, 내용을 추가하거나 수정할 수 있는 클래스입니다.


2. 엑셀 파일 불러오기

load_workbook 함수로 엑셀 파일 불러오기
wb = openpyxl.load_workbook('input_file.xlsx')  # 엑셀 파일을 불러옵니다.
sheet = wb.active # 현재 활성화된 시트를 가져옵니다.
  • openpyxl.load_workbook('input_file.xlsx'): 엑셀 파일을 열어 그 데이터를 사용할 수 있도록 불러옵니다.

  • wb.active: 불러온 엑셀 파일에서 현재 활성화된 시트(첫 번째 시트)를 가져옵니다.


3. 워드 문서 생성

Document 클래스로 워드 문서 생성
doc = Document()  # 새 워드 문서를 생성합니다.
  • Document(): 새로운 워드 문서를 만듭니다. 여기에 데이터를 추가해 나갈 예정입니다.

4. 보고서 제목 추가

add_heading 함수로 제목 추가
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월카메라50500,00025,000,000
1월컴퓨터301,200,00036,000,000
1월스마트폰100900,00090,000,000
2월카메라45480,00021,600,000
2월컴퓨터351,150,00040,250,000
2월스마트폰90850,00076,500,000
3월카메라40470,00018,800,000
3월컴퓨터401,100,00044,000,000
3월스마트폰95800,00076,000,000

다음 내용이 궁금하다면?

코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!