본문 바로가기

파이썬 -한글 코드

[파이썬 -한글] 메일머지, 누름틀 이용한 상장제작 반복작업 코드

import shutil  # 파일복사용 모듈

import win32com.client as win32  # 한/글 열기 위한 모듈

import pandas as pd  # 그 유명한 판다스. 엑셀파일을 다루기 위함



# import win32gui  # 한/글 창을 백그라운드로 숨기기 위한 모듈



excel = pd.read_excel(r"C:\Users\Administrator\Desktop\python\수상자명단.xlsx")  # 엑셀로 데이터프레임 생성

hwp = win32.gencache.EnsureDispatch("HWPFrame.HwpObject")  # 한/글 열기

shutil.copyfile(r"C:\Users\Administrator\Desktop\python\award.hwp",r"C:\Users\Administrator\Desktop\python\award_result.hwp")

 

hwp.Open(r"C:\Users\Administrator\Desktop\python\award_result.hwp")  # 수정할 한/글 파일 열기

 

field_list = [i for i in hwp.GetFieldList().split("\x02")]  # 한/글 안의 누름틀 목록 불러오기

# print(field_list)

 

hwp.Run('SelectAll')  # Ctrl-A (전체선택)

hwp.Run('Copy')  # Ctrl-C (복사)

hwp.MovePos(3)  # 문서 끝으로 이동

print('페이지 복사를 시작합니다.')

 

for i in range(len(excel) - 1):  # 엑셀파일 행갯수-1 만큼 한/글 페이지를 복사(기존에 한쪽이 있으니까)

    hwp.Run('Paste')  # Ctrl-V (붙여넣기)

    hwp.MovePos(3)  # 문서 끝으로 이동

 

for page in range(len(excel)):  # 한/글 모든 페이지를 전부 순회하면서,

    for field in field_list:  # 모든 누름틀에 각각,

        hwp.MoveToField(f'{field}{{{{{page}}}}}')  # 커서를 해당 누름틀로 이동(작성과정을 지켜보기 위함. 없어도 무관)

        hwp.PutFieldText(f'{field}{{{{{page}}}}}',  # f"{{{{{page}}}}}"는 "{{1}}"로 입력된다. {를 출력하려면 {{를 입력.

                         excel[field].iloc[page])  # hwp.PutFieldText("index{{1}}") 식으로 실행될 것.