해결된 질문
작성
·
875
·
수정됨
1
답변 3
1
1
2014 이하 버전에서는 아쉽게도 CopyPage나 PastePage 명령어가 존재하지 않습니다.
다소 번거롭지만 아래 코드를 복붙하여 다시 테스트해봐주시기 바랍니다ㅎ
설명은 간단히 주석으로 붙여놓았습니다^^
# 모듈 임포트
import win32com.client as win32
FILENAME = r"C:\Users\Administrator\Desktop\누름틀필드.hwp"
def 한글시작():
hwp = win32.gencache.EnsureDispatch("hwpframe.hwpobject")
hwp.XHwpWindows.Item(0).Visible = True
hwp.RegisterModule("FilePathCheckDLL", "FilePathCheckerModule")
return hwp
def 엑셀시작():
excel = win32.gencache.EnsureDispatch("Excel.Application")
excel.Visible = True
wb = excel.Workbooks.Open(r"C:\Users\Administrator\Desktop\취미.xlsx")
ws = wb.Worksheets(1)
return excel, wb, ws
def 필드삽입(index, value):
"""
필드삽입 함수 정의
"""
field_list = ["이름", "성별", "생일", "취미"]
for idx, field in enumerate(field_list):
hwp.PutFieldText(f"{field}{{{{{index}}}}}", value[idx])
def 쪽붙이기(file):
"""
PastePage 액션 대신 정의한 함수(한/글 2014 이하 버전용)
"""
hwp.HAction.GetDefault("InsertFile", hwp.HParameterSet.HInsertFile.HSet)
hwp.HParameterSet.HInsertFile.filename = file
hwp.HAction.Execute("InsertFile", hwp.HParameterSet.HInsertFile.HSet)
if __name__ == '__main__':
hwp = 한글시작()
excel, wb, ws = 엑셀시작()
# 엑셀에서 데이터 가져오기
data = [list(i) for i in ws.UsedRange()[1:]] # 제목 행은 제외
# 누름틀페이지 복사하기
for i in range(len(data)):
쪽붙이기(FILENAME) # 페이지 끼워넣기
hwp.HAction.Run("BreakPage") # 쪽 나누기
hwp.HAction.Run("MoveDocBegin") # 문서 처음으로 이동
hwp.Run("Delete") # 빈 페이지 삭제
hwp.Run("Delete") # 빈 줄바꿈 삭제
for idx, row in enumerate(data): # enumerate함수는 for문 안에서 data의 인덱스와 요소를 동시에 가져올 수 있음
row[2] = row[2].strftime("%Y년 %#m월 %#d일") # 먼저 날짜 형식을 "1964년 2월 2일" 방식으로 변환
필드삽입(idx, row) # idx번째 페이지 누름틀에 row의 데이터를 삽입
1
잘 된다니 다행이네요^^
직접 호산님의 업무에 활용하실 때
문법이나 명령어 종류 때문에 막히실 때
언제든 질문 남겨주세요.
구현에 도움 드리겠습니다.
행복한 하루 되세요^^