인프런 커뮤니티 질문&답변

YongJun(Passion)님의 프로필 이미지
YongJun(Passion)

작성한 질문수

직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피

필드 삭제하기

특정 누름틀 필드 제거

해결된 질문

작성

·

583

1

이것저것 다양하게 자동화코드 짜보시다가

막히면 언제든 무엇이든 질문 던져주세요.

업무자동화 코딩은 과학이나 알고리즘과는 조금 달라서

고민만으로 풀리지 않는 경우가 대부분입니다.

저도 최대한 빠르게 회신 드리겠습니다.

 

hwp.DeleteCtrl 부분 잘 학습하다가

업무에서 입력할 부분을 입력한뒤

전체 누름틀 제거가 아닌

특정 누름틀을 제거하고 싶은 경우는 어떻게 방법이 있을까요?

 

답변 1

1

일코님의 프로필 이미지
일코
지식공유자

pyhwpx 모듈을 사용하신다면, (pip으로 설치가능)
아래와 같은 코드로 특정 이름의 필드를 제거할 수 있습니다.

from pyhwpx import Hwp

hwp = Hwp()
hwp.open("./doc.hwp")

hwp.delete_field_by_name("name")  # "name"이라는 이름의 누름틀 모두 제거(텍스트 남김)

image

기존의 win32com 방식으로 제거하시는 방법은,
대략 아래와 같은 함수로 짤 수 있습니다.

import win32com.client as win32

hwp = win32.gencache.EnsureDispatch("hwpframe.hwpobject")


def delete_field_by_name(field_name):
    start_pos = hwp.get_pos()
    ctrl = hwp.HeadCtrl
    while ctrl:
        if ctrl.CtrlID == "%clk":
            hwp.SetPosBySet(ctrl.GetAnchorPos(1))
            if hwp.GetCurFieldName() == field_name:
                hwp.DeleteCtrl(ctrl)
        ctrl = ctrl.Next
    hwp.SetPos(*start_pos)

도움이 되었길 바랍니다^^

YongJun(Passion)님의 프로필 이미지
YongJun(Passion)

작성한 질문수

질문하기