가이드라인

openpyxl로 엑셀 데이터를 읽어와 워드 문서에 표와 텍스트 추가하기

보고서를 작성하다 보면, 엑셀 파일에서 데이터를 읽어와 이를 표와 텍스트로 작성해야 할 때가 있습니다.

이번 수업에서는 이전 Chapter에서 배운 openpyxl 라이브러리를 활용하여 엑셀 데이터를 읽어온 후, python-docx를 사용해 워드 문서에 텍스트와 표를 추가하는 방법을 알아보겠습니다.


엑셀 파일 구조

먼저 이번 수업에서 다룰 엑셀 파일의 구조를 살펴보겠습니다.

엑셀 파일은 일자, 상품별 매출 데이터를 포함하고 있으며, 시트 내 데이터는 다음과 같습니다.

날짜제품명판매량단가총매출
2024-01-01상품 A10050050,000
2024-01-02상품 B150750112,500
2024-01-03상품 C200800160,000
2024-01-04상품 A13050065,000
2024-01-05상품 B170750127,500

이 엑셀 파일에는 각 제품의 일자별 판매량과 단가를 곱한 총매출이 계산되어 있습니다.

이러한 엑셀 파일 내 데이터를 워드 문서로 변환하여, 보고서에 한 번에 포함시키려면 어떻게 해야 할까요?


1. 엑셀 파일에서 데이터 읽어오기

먼저, 엑셀 파일에서 데이터를 읽어오기 위해 openpyxl 라이브러리를 사용합니다.

엑셀 파일에서 데이터 읽어오기
# 엑셀 파일 로드 workbook = load_workbook('input_file.xlsx') # 활성화된 시트 선택 sheet = workbook.active # 데이터 읽어오기 data = [] # min_row=2로 설정하여 첫 번째 행(헤더) 제외 for row in sheet.iter_rows(min_row=2, values_only=True): # 데이터가 있는 행만 추가 data.append(row)
  • load_workbook('input_file.xlsx')은 'input_file.xlsx' 파일을 로드합니다.

  • sheet = workbook.active는 활성화된 시트를 선택합니다.

  • iter_rows(min_row=2, values_only=True)는 엑셀 시트의 데이터를 행 단위로 읽어옵니다. 여기서 min_row=2는 첫 번째 행(헤더)을 건너뛰고 두 번째 행부터 읽어오도록 설정합니다.


2. 워드 문서 생성하기

이제 가져온 데이터를 워드 문서에 넣어보겠습니다.

새 워드 문서 생성하기
# 새 워드 문서 생성 doc = Document() # 제목 추가 doc.add_heading('매출 보고서', 0) # 문단 추가 doc.add_paragraph('다음은 최근 매출 데이터입니다.')
  • Document()를 호출하여 새 워드 문서를 생성합니다.

  • add_heading('매출 보고서', 0)은 문서의 제목을 추가합니다.

  • add_paragraph('다음은 최근 매출 데이터입니다.')는 본문 텍스트를 추가합니다.


3. 엑셀 데이터를 워드 문서에 표로 추가하기

먼저, 표의 헤더를 아래와 같이 추가합니다.

표의 헤더 추가하기
# 표 생성 table = doc.add_table(rows=1, cols=len(sheet[1]), style='Table Grid') # 표의 첫 번째 행에 헤더 추가 hdr_cells = table.rows[0].cells # 엑셀의 첫 번째 행(헤더)를 표의 첫 번째 행에 추가 for i, heading in enumerate(sheet[1]): # 헤더 셀에 텍스트 추가 hdr_cells[i].text = str(heading.value)
  • doc.add_table(rows=1, cols=len(sheet[1]), style='Table Grid')는 엑셀 데이터의 열 개수만큼 컬럼이 있는 표를 생성합니다.

  • table.rows[0].cells는 표의 첫 번째 행에 헤더를 추가합니다.

  • for i, heading in enumerate(sheet[1])는 엑셀의 첫 번째 행(헤더)를 표의 첫 번째 행에 추가합니다.

  • hdr_cells[i].text = str(heading.value)는 헤더 셀에 텍스트를 추가합니다.


이후 표의 각 행에 데이터를 추가합니다.

표에 데이터 추가하기
# 표에 데이터 추가 for row in data: # 표에 새 행 추가 row_cells = table.add_row().cells # 각 행의 데이터를 표에 추가 for i, value in enumerate(row): # 각 셀에 데이터 추가 row_cells[i].text = str(value)

4단계: 문서 저장하기

모든 데이터를 추가한 후, 워드 문서를 저장합니다.

워드 문서 저장하기
# 문서 저장 doc.save('output_file.docx')

이 코드는 작성된 문서를 'output_file.docx'라는 이름으로 저장합니다.

Mission
0 / 1

python-docx에서 문서의 제목을 추가하는 메서드는 무엇인가요?

add_paragraph

add_heading

add_title

add_text

가이드라인

AI 튜터

배포

디자인

업로드

수업 노트

즐겨찾기

도움말

코드 에디터

코드 실행
코드 생성

실행 결과

입력 데이터/결과물

문서가 비어 있습니다.

코드를 실행해보세요.