표 전체 리스트를 순회하는 방법 문의드립니다.

안녕하세요.
한글파일로 종종 업무내용들을 개요기능을 활용하여 만들고 있는데, 이걸 웹 게시를 위해 마크다운으로 바꾸려합니다.
지난번 질의를 통해 개요를 마크다운으로 바꾸는 과정은 해결되었는데

  1. 중간중간에 삽입된 표를 인식하여
  2. 1*1사이즈인지 확인하고
  3. 2에서 True인 표 내용을 복사한 뒤 삭제하고
  4. String + 표 내용 + String 의 형태로 붙여넣으려고 합니다.

그런데 1번부터 막히네요 ㅠㅠ
Form에 해당하는 개체는 일종의 컬렉션이 있었던것 같은데
표도 인덱스를 통해 개체를 선택하는 기능이 있을까요?

만약 있다면 글의 최하단에 있는 표부터 역순으로 해체작업 Loop를 진행하려 합니다.

안녕하세요,
HeadCtrl을 가져온뒤 Next를 통해 다음 컨트롤 검사가 가능합니다.
해당 컨트롤의 CtrlID를 가져오면 어떤 컨트롤인지 알수있는데 CtrlID 가 tbl인 경우 테이블입니다.
마지막 컨트롤에서 Next를 가져오면 Null이 뜨니 그때 정지하면 될것 같습니다.
아면 LastCtrl을 가져와 비교하는 방법도 있을것입니다.
감사합니다.

2개의 좋아요

파이썬 기준으로는 아래와 같이 코딩해볼 수 있겠습니다.
(bhjung님의 아이디어를 참고하여 작성하였습니다.)

def insert_text(text):
    pset = hwp.HParameterSet.HInsertText
    hwp.HAction.GetDefault("InsertText", pset.HSet)
    pset.Text = text
    hwp.HAction.Execute("InsertText", pset.HSet)


def table_to_string(sep="", pre="Hello ", suf=" world!"):
    pset = hwp.HParameterSet.HTableTblToStr
    hwp.HAction.GetDefault("TableTableToString", pset.HSet)
    pset.UserDefine = sep
    hwp.HAction.Execute("TableTableToString", pset.HSet)
    insert_text(suf)
    hwp.Run("MoveLineBegin")
    insert_text(pre)


ctrl = hwp.HeadCtrl
while ctrl:
    if ctrl.CtrlID == "tbl":
        hwp.SetPosBySet(ctrl.GetAnchorPos(0))
        hwp.FindCtrl()
        hwp.Run("ShapeObjTableSelCell")
        hwp.Run("TableColEnd")
        hwp.Run("TableColPageDown")
        if hwp.KeyIndicator()[-1].startswith("(A1)"):
            hwp.Run("Cancel")
            table_to_string()
    ctrl = ctrl.Next

시연화면은 아래와 같습니다.

녹화_2023_11_29_20_19_35_254

도움이 되었길 바랍니다.
행복한 하루 되세요!ㅎ

도움이 많이 되었습니다. 항상 건강하세요~

1개의 좋아요

감사합니다. 도움이 많이 되었습니다.

1개의 좋아요