해결된 질문
작성
·
54
1
hwp.set_field_by_bracket()
메서드를 사용하여 셀필드나 누름틀 필드를 추가하고자 했지만, 어떻게 사용하는지 몰라서 질문드립니다.
제가 궁금한 것은
set_field_by_bracket() 사용방법
수동이 아닌 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
레몬민트님 안녕하세요!
①{{필드이름:안내문:메모내용}}
형식의 문자열을 본문이나 셀 안에 넣어두시면, 일괄 누름틀로 변경됩니다.
(안내문, 메모내용은 필수는 아니며, 셀 안에서도 셀필드가 아니라 누름틀로 변환됩니다.)
② [[필드이름]]
문자열을 셀 안에 넣어두시면, 일괄 셀필드로 변경됩니다.
③ 다만 의도치 않게 본문에 [[]]
나 {{}}
문자열이 있는 경우 예외없이 필드로 변경되거나 삭제돼버리므로
주의하여 사용해 주시기 바랍니다.
(가급적 CreateField
나 SetCurFieldName
을 직접 사용하실 것을 추천드립니다.)
아래는 한/글 오토메이션API에서 제공하는 SetCurAFieldName이라는 메서드 사용법입니다.
특정 셀로 캐럿을 옮겨놓은 상태에서 hwp.SetCurFieldName("필드명")
을 입력하시면 셀필드가 생성됩니다.
코드
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를 사용하여 셀필드를 생성하는 방법과 관련된 질문에 대해 답변드리겠습니다.
set_field_by_bracket()
사용방법set_field_by_bracket()
메서드는 주로 한글 문서의 특정 위치에 필드를 삽입하거나 수정하는 데 사용됩니다. 예를 들어, 중괄호 {}
를 이용해 필드를 추가하거나 네임태그를 수정할 수 있습니다.
셀필드를 생성하는 여러 방법 중 하나는 파라미터셋을 올바르게 설정하여 셀의 속성을 지정하는 것입니다.
아래는 올바르게 설정된 셀필드 예제 코드입니다.
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)
이와 관련된 유사한 질문과 답변도 참고하시면 도움되실 것입니다:
이외에도 보다 구체적인 정보는 아래 관련 질문과 댓글에서 참조하실 수 있습니다:
- “한글 점끌기 탭 구현”
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
감사합니다!
즐거운 추석되세요!!