가이드라인

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

엑셀 파일에서 데이터를 읽어와 워드 문서로 작성하는 작업은 보고서나 문서 자동화 과정에서 자주 필요합니다.

이번 수업에서는 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: 워드 문서 생성하기

이제 가져온 데이터를 워드 문서에 넣어보겠습니다. 먼저 python-docx를 이용해 새로운 워드 문서를 생성합니다.

새 워드 문서 생성하기
# 새 워드 문서 생성 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 튜터

배포

디자인

업로드

수업 노트

즐겨찾기

도움말

코드 에디터

코드 실행
코드 생성

실행 결과

입력 데이터/결과물

문서가 비어 있습니다.

코드를 실행해보세요.