• 카테고리

    질문 & 답변
  • 세부 분야

    업무 자동화

  • 해결 여부

    해결됨

특정 누름틀 필드 제거

23.12.28 15:34 작성 조회수 321

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)

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