openpyxl로 엑셀 데이터를 읽어와 워드 문서에 표와 텍스트 추가하기
엑셀 파일에서 데이터를 읽어와 워드 문서로 작성하는 작업은 보고서나 문서 자동화 과정에서 자주 필요합니다.
이번 수업에서는 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: 워드 문서 생성하기
이제 가져온 데이터를 워드 문서에 넣어보겠습니다. 먼저 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'라는 이름으로 저장합니다.
python-docx에서 문서의 제목을 추가하는 메서드는 무엇인가요?
가이드라인
AI 튜터
배포
디자인
업로드
수업 노트
즐겨찾기
도움말
코드 에디터
실행 결과
문서가 비어 있습니다.
코드를 실행해보세요.