openpyxl로 엑셀 데이터를 읽어와 워드 문서에 표와 텍스트 추가하기
보고서를 작성하다 보면, 엑셀 파일에서 데이터를 읽어와 이를 표와 텍스트로 작성해야 할 때가 있습니다.
이번 수업에서는 이전 Chapter에서 배운 openpyxl 라이브러리를 활용하여 엑셀 데이터를 읽어온 후, python-docx를 사용해 워드 문서에 텍스트와 표를 추가하는 방법을 알아보겠습니다.
엑셀 파일 구조
먼저 이번 수업에서 다룰 엑셀 파일의 구조를 살펴보겠습니다.
엑셀 파일은 일자, 상품별 매출 데이터를 포함하고 있으며, 시트 내 데이터는 다음과 같습니다.
| 날짜 | 제품명 | 판매량 | 단가 | 총매출 |
|---|---|---|---|---|
| 2024-01-01 | 상품 A | 100 | 500 | 50,000 |
| 2024-01-02 | 상품 B | 150 | 750 | 112,500 |
| 2024-01-03 | 상품 C | 200 | 800 | 160,000 |
| 2024-01-04 | 상품 A | 130 | 500 | 65,000 |
| 2024-01-05 | 상품 B | 170 | 750 | 127,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'라는 이름으로 저장합니다.
이 챕터의 강의 · 파워포인트와 워드 반복 업무를 파이썬 코드로 처리하는 방법
- 1. 반복적인 파워포인트 작업을 자동화하는 방법
- 2. 슬라이드에 텍스트 상자와 텍스트 추가하기
- 3. 텍스트 서식 글꼴, 크기, 색상 변경하기
- 4. 슬라이드에 이미지 삽입 및 조정하기
- 5. 슬라이드에 표(Table) 생성 및 관리하기
- 6. 엑셀 데이터를 슬라이드에 표로 삽입하기
- 7. 파이썬으로 차트(Chart) 생성 및 데이터 시각화하기
- 8. 빈칸 채우기 퀴즈
- 9. 파이썬 코드로 Word 문서 작성하기
- 10. 단락 추가 및 텍스트 서식 설정하기
- 11. 목록(List) 작성하기
- 12. 파이썬 코드로 표를 만드는 방법
- 13. 문서에 이미지 삽입하고 스타일링하기
- 14. 문서의 페이지 레이아웃 조정하기
- 15. openpyxl로 엑셀 데이터를 읽어와 워드 문서에 표와 텍스트 추가하기
- 16. 선택형 퀴즈
- 17. 도전! python-docx로 간단한 테이블 만들기
python-docx에서 문서의 제목을 추가하는 메서드는 무엇인가요?
add_paragraph
add_heading
add_title
add_text
학습 자료
AI 튜터
디자인
업로드
수업 노트
즐겨찾기
도움말