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

한파엑셀님의 프로필 이미지
한파엑셀

작성한 질문수

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

한/글 문서 한 페이지씩 완성하기

API를 이용해 셀필드를 생성하는 방법 있을까요?

해결된 질문

작성

·

54

1

hwp.set_field_by_bracket()

메서드를 사용하여 셀필드나 누름틀 필드를 추가하고자 했지만, 어떻게 사용하는지 몰라서 질문드립니다.

 

제가 궁금한 것은

  1. set_field_by_bracket() 사용방법

  2. 수동이 아닌 API를 이용하여 셀필드를 만드는 스크립트 입니다.

감사합니다.

# 해당 스크립트는 동작하지 않더군요..


hwp.HAction.GetDefault("TablePropertyDialog", hwp.HParameterSet.HShapeObject.HSet)
hwp.HParameterSet.HShapeObject.HSet.SetItem("ShapeType", 3)  # 셀의 형태 설정
hwp.HParameterSet.HShapeObject.HSet.SetItem("ShapeCellSize", 0)  # 셀 크기 설정
hwp.HParameterSet.HShapeObject.ShapeTableCell.CellCtrlData.SetItem("Name", "필드")
hwp.HAction.Execute("TablePropertyDialog", hwp.HParameterSet.HShapeObject.HSet)

 

답변 2

1

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

레몬민트님 안녕하세요!

 

1. set_field_by_bracket 메서드 사용방법

녹화_2024_09_15_15_45_50_803.gif

{{필드이름:안내문:메모내용}} 형식의 문자열을 본문이나 셀 안에 넣어두시면, 일괄 누름틀로 변경됩니다.
(안내문, 메모내용은 필수는 아니며, 셀 안에서도 셀필드가 아니라 누름틀로 변환됩니다.)

[[필드이름]] 문자열을 셀 안에 넣어두시면, 일괄 셀필드로 변경됩니다.

③ 다만 의도치 않게 본문에 [[]]{{}} 문자열이 있는 경우 예외없이 필드로 변경되거나 삭제돼버리므로
주의하여 사용해 주시기 바랍니다.
(가급적 CreateFieldSetCurFieldName을 직접 사용하실 것을 추천드립니다.)

 

2. API로 셀필드 만들기

아래는 한/글 오토메이션API에서 제공하는 SetCurAFieldName이라는 메서드 사용법입니다.

 

특정 셀로 캐럿을 옮겨놓은 상태에서 hwp.SetCurFieldName("필드명")을 입력하시면 셀필드가 생성됩니다.

녹화_2024_09_15_15_59_25_743.gif

 

 

아래는 SetCurField와 PutFieldText의 간단한 활용예시입니다.

녹화_2024_09_15_15_57_56_463.gif

 

코드

from pyhwpx import Hwp


hwp = Hwp()
#%%
for _ in range(2):
    hwp.create_table(2,2)
    hwp.insert_text("이름")
    hwp.TableRightCell()
    hwp.set_cur_field_name("이름")  # <--
    hwp.TableRightCell()
    hwp.insert_text("취미")
    hwp.TableRightCell()
    hwp.set_cur_field_name("취미")  # <--
    hwp.CloseEx()
#%%
profile = {"이름": ["일코", "이코"],
           "취미": ["코딩", "디버깅"]}

hwp.put_field_text(profile)

참고로 본문이나 셀에 누름틀을 생성하는 메서드는 hwp.CreateField(필드명,  안내문, 메모)입니다.

 

도움이 되었길 바랍니다.

행복한 하루, 편안한 연휴 보내세요!!

 

 

한파엑셀님의 프로필 이미지
한파엑셀
질문자

감사합니다!

즐거운 추석되세요!!

1

안녕하세요, 인프런 AI 인턴입니다. LemonMint - Pengui님.

API를 사용하여 셀필드를 생성하는 방법과 관련된 질문에 대해 답변드리겠습니다.

1. set_field_by_bracket() 사용방법

set_field_by_bracket() 메서드는 주로 한글 문서의 특정 위치에 필드를 삽입하거나 수정하는 데 사용됩니다. 예를 들어, 중괄호 {}를 이용해 필드를 추가하거나 네임태그를 수정할 수 있습니다.

2. 셀필드 생성 스크립트

셀필드를 생성하는 여러 방법 중 하나는 파라미터셋을 올바르게 설정하여 셀의 속성을 지정하는 것입니다.
아래는 올바르게 설정된 셀필드 예제 코드입니다.

import win32com.client as win32

# 한/글 실행
hwp = win32.gencache.EnsureDispatch("hwpframe.hwpobject")
hwp.XHwpWindows.Item(0).Visible = True

# 셀을 선택하고 셀필드 삽입
hwp.MovePos(3)  # 커서를 테이블 셀로 이동
hwp.HAction.GetDefault("TableCellBlock", hwp.HParameterSet.HShapeObject.HSet)
hwp.HAction.Execute("TableCellBlock", hwp.HParameterSet.HShapeObject.HSet)

# 셀 속성 설정
pset = hwp.HParameterSet.HShapeObject
pset.HSet.SetItem("ShapeType", 3)  # 셀 형태
pset.HSet.SetItem("ShapeCellSize", 0)  # 셀 크기
pset.ShapeTableCell.CellCtrlData.name = "필드"  # 셀필드 이름
hwp.HAction.Execute("TablePropertyDialog", pset.HSet)

이와 관련된 유사한 질문과 답변도 참고하시면 도움되실 것입니다:

이외에도 보다 구체적인 정보는 아래 관련 질문과 댓글에서 참조하실 수 있습니다:
- “한글 점끌기 탭 구현”

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

한파엑셀님의 프로필 이미지
한파엑셀

작성한 질문수

질문하기