들어가며
앞선 블로그에서
한글 문서에 필드 이름을 지정하고
해당 필드 이름이 값을 넣는 방법을 알아보았습니다.
※ 한글 문서 필드에 값 넣기 : 한글 문서에 필드 지정하고, 필드에 값 입력하기(PutFieldText)-첫번째
기본적으로는 같은 필드 이름이라면 같은 값이 들어가지만,
같은 필드 이름이라도 다른 값을 정하여 넣을 수도 있습니다.
이번 블로그에서는
같은 한글 문서의 같은 필드 이름에 다른 값을 넣는 방법을 알아보겠습니다.
문서 준비하기
우선 아래와 같이 표 안에 동일한 필드 이름을 여러 개 지정했습니다.
필드 이름은 누름틀을 사용해서 지정했습니다.
단축키는 Ctrl + K + E입니다.
기존에 사용했던 코드로 값을 입력하면
다음과 같이 모두 동일한 이름이 들어갑니다.
하지만 이 값을 구분해서 넣을 수도 있습니다.
먼저 한글이 필드 이름을 어떻게 관리하는지 알아야 합니다.
직접 확인하는 방법은 다음 블로그에서 다루도록 하겠습니다.
우선은 한글의 필드 이름은
제품명 / 일련번호
이렇게 필드 이름 그 자체만으로 관리되기도 하지만
제품명{{0}} / 일련번호{{0}}
이렇게 관리되기도 합니다.
즉, 위 표 안에 필드는 다음과 같이 구성되어 있습니다.
제품명{{0}} 제품명{{1}} 제품명{{2}} 제품명{{3}} 제품명{{4}} 제품명{{5}}
일련번호{{0}} 일련번호{{1}} 일련번호{{2}} 일련번호{{3}} 일련번호{{4}} 일련번호{{5}}
시작하는 번호가 0인 것에 주의해야 합니다.
코드로 확인하기
즉 아래와 같이 코드를 작성하면
같은 필드 이름이라도 다른 값을 넣을 수 있습니다.
import win32com.client as win32
import os, shutil
def execute_hwp(hwp_visible=True):
try:
hwp = win32.gencache.EnsureDispatch('HWPFrame.HwpObject')
return hwp
except:
cache_dir = win32.gencache.GetGeneratePath()
if os.path.exists(cache_dir):
shutil.rmtree(cache_dir)
hwp = win32.gencache.EnsureDispatch('HWPFrame.HwpObject')
return hwp
finally:
if 'hwp' in locals():
hwp.XHwpWindows.Active_XHwpWindow.Visible = hwp_visible
def load_hwp(hwp, path):
if not os.path.exists(path):
print("파일이 존재하지 않습니다.")
else:
hwp.Open(path, "", "")
if __name__ == "__main__":
hwp = execute_hwp()
load_hwp(hwp, r"C:\Users\karur\Desktop\한글 테스트 문서.hwp")
hwp.PutFieldText("제품명{{0}}", "컴퓨터")
hwp.PutFieldText("제품명{{1}}", "계산기")
hwp.PutFieldText("제품명{{2}}", "타자기")
hwp.PutFieldText("제품명{{3}}", "제빙기")
hwp.PutFieldText("제품명{{4}}", "태블릿")
hwp.PutFieldText("제품명{{5}}", "핸드폰")
hwp.PutFieldText("일련번호{{0}}", "2025_0001")
hwp.PutFieldText("일련번호{{1}}", "2025_0002")
hwp.PutFieldText("일련번호{{2}}", "2025_0003")
hwp.PutFieldText("일련번호{{3}}", "2025_0004")
hwp.PutFieldText("일련번호{{4}}", "2025_0005")
hwp.PutFieldText("일련번호{{5}}", "2025_0006")
위 코드를 실행하면 아래와 같이 한글 문서의 같은 필드 이름에
다른 값들이 들어가 있는 것을 알 수 있습니다.
코드를 아래와 같이 수정하면
다른 파일에서 데이터를 불러와 표 안에 넣을 수도 있습니다.
결과는 동일합니다.
if __name__ == "__main__":
hwp = execute_hwp()
load_hwp(hwp, r"C:\Users\karur\Desktop\한글 테스트 문서.hwp")
제품명 = ["컴퓨터", "계산기", "타자기", "제빙기", "태블릿", "핸드폰"]
일련번호 = ["2025_0001", "2025_0002", "2025_0003", "2025_0004", "2025_0005", "2025_0006"]
for i, 제품 in enumerate(제품명):
hwp.PutFieldText(f"제품명{{{{{i}}}}}", 제품)
for j, 연번 in enumerate(일련번호):
hwp.PutFieldText(f"일련번호{{{{{j}}}}}", 연번)
데이터의 형식에 따라 코드는 달라질 수 있지만,
이런 방법으로 동일한 필드 이름이 있더라도
각각 다른 값을 넣을 수 있습니다.
중괄호({)가 5개씩 들어가 있다는 점에 주의하세요.
마치며
이번 블로그에서는 동일한 필드이름이 있을 때
다른 값을 넣는 방법을 알아보았습니다.
이 방법은 특히 표에 데이터를 넣을 때 유용합니다.
엑셀과 같은 외부데이터에서 특정 조건을 만족하는 내용을 뽑아
한글 문서로 만들 때와 같은 경우에 매우 유용합니다.
[ 파이썬 관련 블로그 글 목록 ]
파이썬(Python) 블로그 목록
'PYTHON 한글자동화' 카테고리의 다른 글
[ 한글 자동화 ] 필드 이름 목록 확인하기 : GetFieldList() (0) | 2025.05.13 |
---|---|
[ 한글 자동화 ] 파이썬으로 엑셀 데이터 읽고 한글 문서에 자동 입력하기 (0) | 2025.05.13 |
[ 한글 자동화 ] 한글 문서 표에 필드 이름 지정하고 값 넣기, 필드에 값 입력하기(PutFieldText) - 두 번째 (0) | 2025.05.11 |
[ 한글 자동화 ] 한글 문서에 필드 지정하고, 필드에 값 입력하기(PutFieldText)-첫번째 (1) | 2025.05.11 |
[ 한글 자동화 ] 한글(HWP) 문서 및 프로그램 종료(Quit(), Clear(), Run("FileClose"), XHwpDocuments.Close()) (0) | 2025.05.11 |