파이썬으로 한/글을 실행하는 방법을 모른다면?
<파이썬으로 한/글 파일에 텍스트를 입력하는 방법>
1. InsertText 액션을 이용하여 텍스트 입력
파이썬으로 한/글을 열었을 때
텍스트를 입력하는 가장 기본적인 방법은
아래와 같이 InsertText 액션을 정의하고 실행하는 것입니다.
hwp.HAction.GetDefault("InsertText", hwp.HParameterSet.HInsertText.HSet)
hwp.HParameterSet.HInsertText.Text = "입력할 텍스트"
hwp.HAction.Execute("InsertText", hwp.HParameterSet.HInsertText.HSet)
위 방법의 장점으로는
① 속도가 가장 빠르다.
② 파라미터가 Text 하나로 함수로 만들기가 쉽다.
등을 들 수 있습니다.
다만, 코드가 다소 길고, 한/글 액션 특성상 세 줄이나 실행해야 하기 때문에
바로 사용하기는 부담스럽고,
아래와 같이 함수로 만들어 활용하면 편합니다.
def insert_text(text):
hwp.HAction.GetDefault("InsertText", hwp.HParameterSet.HInsertText.HSet)
hwp.HParameterSet.HInsertText.Text = text
hwp.HAction.Execute("InsertText", hwp.HParameterSet.HInsertText.HSet)
insert_text("Hello World")
가장 기초적이고 기본적인 방법이지만, 실제로는 잘 사용하지 않게 됩니다.
마지막에 보여드릴 누름틀(필드)을 사용하는 더 좋은 방법이 있기 때문입니다.
2. 클립보드 활용하여 텍스트 입력
파이썬에서 가장 많이 사용하는 클립보드 모듈은 pyperclip입니다.
pyperclip.copy(text)로 text를 클립보드에 집어넣을 수 있고
pyperclip.paste()는 클립보드에 있는 텍스트를 문자열로 가져옵니다.
또한 한/글에서는 hwp.Run("Paste")으로 클립보드에 있는 문자열을 문서에 입력해줍니다.
이를 활용하면 아래와 같이 짧은 코드로 (클립보드를 통해) 텍스트를 입력할 수 있습니다.
import pyperclip as cb
cb.copy("Hello World")
hwp.Run("Paste")
이 명령의 가장 큰 장점은 "코드가 짧고 직관적"이라는 것입니다.
다만 작은 단점이 있는데,
클립보드를 사용하기 때문에, 오류발생 가능성이 있다는 것입니다.
자동화 작업중에는 절대 클립보드를 사용하면 안됩니다.
3. 누름틀(필드) 이용하여 텍스트 입력
한/글에서 제공하는 기본기능인 "누름틀(필드)"을 통해 텍스트를 입력하는 방법입니다.
아래의 세 단계로 실행합니다. (필드를 재활용하려면 과정③은 생략합니다.)
① 텍스트를 삽입할 장소에 특정 이름의 누름틀(필드)을 생성하고,
② 해당 필드에 텍스트를 입력합니다.
③ 필드를 지웁니다. (입력한 문자열은 그대로 유지됩니다.)
# ① 필드 생성
hwp.CreateField(
Direction="입력칸",
memo="텍스트 입력",
name="textarea")
# ② 텍스트 입력
hwp.PutFieldText(
"textarea",
"Hello World")
# ③ 필드 삭제
hwp.Run("DeleteField")
저는 개인적으로 이 방법(필드를 통한 입력)을 가장 선호합니다.
필드를 통한 문자열 입력은
처음엔 코드가 다소 길고 복잡해 보이지만,
아주 강력한 두 가지 장점이 있습니다.
① 문서에 입력위치를 미리 정해놓을 수 있다.
② 여러 개의 필드에 한 번에 문자열을 입력할수 있다.
3-1. 여러 개의 누름틀에 동시에 입력하기
한/글에서 수작업으로 여러 개의 필드를 미리 만들어놓은 경우,
코드 한 줄만으로 모든 필드에 단번에 값을 채울 수 있습니다.
속도도 어마어마하게 빠릅니다.
대신 파라미터로 파이썬의 기본 자료형인 리스트나 튜플이 아닌
"\x02"를 구분자로 하는 문자열을 받아야 합니다.
아래의 예시코드를 보면 쉽게 이해하실 것입니다.
필드리스트 = ["국어점수", "영어점수", "수학점수", "과학점수"]
점수리스트 = ["90", "95", "80", "60"]
hwp.PutFieldText(
"\x02".join(필드리스트),
"\x02".join(점수리스트))
이 방법을 적용하면,
엑셀파일의 수백 수천개의 셀 값을
한/글파일 각각의 필드에 넣을 때에도
순식간에 문서가 완성됩니다.
수백개의 필드 하나하나에 값을 하나씩 집어넣으면
아래처럼 다소 긴 시간이 소요되기도 합니다.
결론 : 누름틀을 활용합시다
여기까지 파이썬으로 한/글 본문에 텍스트를 입력하는
세 가지 방법을 알아보았습니다.
① InsertText 액션 정의
② 클립보드 활용
③ 누름틀(필드) 활용
경우에 따라 적절한 방법이 다르겠지만,
보편적으로 가장 쉽게 사용할 수 있는 방법은 역시
"누름틀(필드)을 이용한 입력"이라고 생각합니다.
입력위치까지 찾아가는 과정을 코드로 작성하는 것이 굉장히 번거롭기 때문입니다.
그럼 이번 포스팅은 여기서 마치겠습니다.
행복한 하루 되세요!
국내 유일의 파이썬+한컴오피스 업무자동화 입문강의
'아래아한글 자동화 > python+hwp 중급' 카테고리의 다른 글
파이썬으로 아래아한글 실행하는 방법 (0) | 2022.05.09 |
---|---|
서식 유지한 채로 스타일을 모두 "바탕글"로 바꾸는 코딩 (1) | 2022.04.30 |
한글 불러올 때 CLSIDToClassMap 오류 해결하는 가장 간단한 방법 (1) | 2022.04.18 |
댓글