셀필드 쉽게 지정하는방법
안녕하세요
예를들어 100바이 100짜리 표에 엑셀에서 데이터를 옮겨야 한다면
한글 100바이 100짜리 표에 셀필드를 모두 지정해놔야 할까요?
모두 지정해야 한다면 한칸 한칸 속성들어가서 작성을 해야 하나요?
답변 2
1
현욱님 안녕하세요?
답변이 늦었습니다ㅜ
저 개인적으로는 임시 셀필드를 만들어서 엑셀데이터를 옮기는 방법을 자주 쓰지만,
필드를 쓰지 않고 셀 하나하나를 옮기는 방법이 필요한 경우도 있습니다.
(예를 들면, 엑셀파일의 날짜데이터나, 숫자데이터를 적절히 가공해야 한다든지요..)
두 가지 방법 다 예시를 보여드리겠습니다.
1. 임시 셀필드를 만들고 삽입하는 방법
예시로 사용한 엑셀파일은 여기에서 다운받으실 수 있습니다.
① 만약 표를 새로 생성하시는 거라면,
표를 새로 생성하시는 경우라면, 필드를 쓰지 않고 아래 코드로 엑셀문서를 가져오실 수 있습니다.

from pyhwpx import Hwp
hwp = Hwp()
hwp.table_from_data(
data="괴상한취미특기.xlsx", # 엑셀파일 경로
treat_as_char=False, # 글자처럼 취급 여부
header=True, # 1행을 제목행으로 반복할지 여부
index=False, # 1열에 인덱스 삽입할지 여부
cell_fill=True, # 1행에 회색음영 여부
header_bold=True # 1행에 Bold 적용여부
)
# 표 전체너비는 유지한 채로 열 비율 조정하기
hwp.set_col_width([2,2,6,6])
② 표의 서식은 이미 완성되어 있고, 엑셀에서 내용만 채워넣는 경우라면?
저는 특별한 경우가 아니라면 이 방식을 가장 많이 사용하는데요.
이 경우에는
제목행을 제외한 모든 셀에 동일한 (아무) 이름의 셀필드를 모두 지정하면 됩니다.
엑셀데이터는 openpyxl이나 xlwings, pandas 등 여러가지 모듈 중 하나를 쓰시면 되는데,
아무래도 pandas가 가장 인기있는 모듈 아닌가 싶습니다. 참고할 포스팅도 많고요.
하여튼 엑셀문서를 데이터프레임으로 변환한 후,
값 부분만 1차원으로 펼쳐서 hwp.put_field_text로 넣으시면 됩니다.
설명이 다소 장황한데(코드도 약간 장황할 수...ㅜ)
아래 판다스를 활용하는 코드와 시연화면을 보여드리겠습니다.

from pyhwpx import Hwp
import pandas as pd
hwp = Hwp()
# 엑셀파일을 1차원 리스트로 변환하기
df = pd.read_excel("괴상한취미특기.xlsx")
l = df.values.flatten().tolist()
# target번째 표의 첫 번째(A1)셀로 진입하기
target = 0
hwp.get_into_nth_table(target)
# 1행을 제외한 모든 셀 선택
hwp.TableLowerCell()
hwp.TableCellBlock()
hwp.TableCellBlockExtend()
hwp.TableColEnd()
hwp.TableColPageDown()
# 임시필드 넣고 값 채운 후 임시필드 지우기
hwp.set_cur_field_name("imsi") # 선택된 셀에 셀필드 지정하는 코드
hwp.put_field_text("imsi", l)
hwp.set_cur_field_name("") # 선택된 셀의 셀필드 이름 제거
hwp.Cancel()코드가 다소 길어 보이지만, 동작 자체는 간단합니다.
①엑셀문서를 1차원으로 쫙 펼친 후에 ②put_field_text로 일괄로 넣는 작업이 전부입니다.
열마다 필드를 일일이 다른 이름으로 지정하지 않아도 되고, 서식도 잃지 않으면서
한/글 표와 엑셀 칼럼의 수만 일치하면 사용할 수 있는, 속도도 가장 빠르고 유용한 방법입니다.
2. 셀 하나하나 직접 옮기기
엑셀데이터에 날짜데이터가 있거나, 1,000단위 콤마를 넣어야 하거나,
"3.0E-3" 같은 지수 서식의 문자열을 "3×10^-3"처럼 위첨자로 변환해야 한다든지 하는 경우에는
셀을 한땀한땀 hwp.insert_text로 넣으면서 그때그때 조작해야 하는 경우가 있을 수도 있거든요.
(우선 put_field_text로 다 때려넣고, 다른 반복작업 코드로 후처리를 하는 방법도 있겠네요ㅎ)
하여튼 여러 가지 방법이 있겠지만, 1번 방법과 비슷하게 짜보면

from pyhwpx import Hwp
import pandas as pd
hwp = Hwp()
# 엑셀파일을 1차원 리스트로 변환하기
df = pd.read_excel("괴상한취미특기.xlsx")
l = df.values.flatten().tolist()
# target번째 표의 첫 번째(A1)셀로 진입하기
target = 0
hwp.get_into_nth_table(target)
# A2셀로 이동
hwp.TableLowerCell()
# 순차적으로 값 입력
for value in l:
hwp.insert_text(value)
hwp.TableRightCell()
제가 질문의 의도를 제대로 파악하지 못하고
다소 장황하게 설명을 드린 느낌입니다ㅜ
하여튼 남겨주신 질문에 대한 답변을 요약해보면
① 꼭 셀필드를 적용해야 하는 건 아니지만, 적용하면 편하고 빠릅니다.
② 셀필드를 삽입할 때 항상 속성창에 들어가서 직접 필드명을 입력하는 경우도 많아요.
근데 한 번에 여러 셀을 선택하고 필드명을 지정할 수 있으니까,
꼭 코드를 활용하지 않아도 금방 작업하실 수 있을 거예요.
위의 예시에서는 극단적으로 엑셀데이터가 들어갈 셀 전체의 필드명을
아예 한 개로 통일해버리고, 값도 무식하게 한 번에 넣어버렸는데요.
경우에 따라 적절한 방법을 생각하셔서 구현하시면 될 것 같아요^^
하여튼 저 개인적으로는 크게 특별한 경우가 아니면 1.② 방법을 가장 많이 쓰고 있어요.
하나씩 해보시면서 적절한 방법을 찾으시기 바랍니다.
추가로 질문 있으면 언제든 자유롭게 남겨주세요!
도움이 되었길 바랍니다.
행복한 하루 되세요^^
1
안녕하세요, 인프런 AI 인턴입니다. Hyunuk Seo님.
100x100 크기의 한글 표에 셀필드를 모두 지정해야 한다면, 수동으로 각 셀에 필드 이름을 지정하는 것은 매우 번거로운 작업이 될 것입니다. 이를 자동화하는 방법이 있습니다.
이전 질문에서도 유사한 문제에 대해 다룬 적이 있습니다. 아래에서 유사한 사례와 해결 방법을 참고하실 수 있도록 관련 링크를 제공하겠습니다.
해당 게시물에서는 셀필드명을 표에 자동으로 부여하는 코드 예제와 함께 설명하고 있습니다. 이를 통해 Hyunuk Seo님도 많은 셀에 대해 필드를 빠르게 지정할 수 있을 것입니다.
- 셀필드 자동 지정 코드 예제:
”`python
import os
from pyhwpx import Hwp
hwp = Hwp()
# 한글 문서 열기
hwp.Open(‘your_hwp_file.hwp’)
# 예: 100x100 크기의 셀 필드 자동 지정
table_rows = 100
table_cols = 100
for row in range(1, table_rows + 1):
for col in range(1, table_cols + 1):
fieldname = f”cell{row}_{col}”
hwp.MoveToField(field_name)
hwp.SetCurFieldName(field_name)
hwp.Save()
hwp.Quit()
“`
- 추가적인 정보:
- 위 script는 주어진 파일(‘your_hwp_file.hwp’)을 열어 각 셀에 필드 이름을 “cell_행_열” 형태로 지정하는 예제입니다.
- 한글에서 특정 셀이름을 수동으로 지정할 필요 없이, 이 코드를 실행하시면 자동으로 셀필드를 설정할 수 있습니다.
- 위 script는 주어진 파일(‘your_hwp_file.hwp’)을 열어 각 셀에 필드 이름을 “cell_행_열” 형태로 지정하는 예제입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
섹션7과 같은 수학 수식을 백지에서 시작할 때 어떻게 만들 수 있을까요?
0
76
1
hwp 병렬 작업시 클립보드 충돌문제
0
58
1
본문을 각주로 내리는 법
1
93
1
한글 자동화 삽도 삽입!!
1
384
2
한글 표 내부 위치 찾는 코드좀 알려주세요 ㅠㅠ
1
233
2
빈 문서를 새로 열때는 팝업이 안나오는데 기존 문서를 열면 팝업이 나옵니다
1
118
2
사무실 컴퓨터ㅠ
0
96
2
글자입력 여러번 실행기
0
67
1
현재 커서 문단에 아무런 내용이 없는지 확인하기
1
102
1
특정 스타일을 찾아 이동하는 방법
1
161
2
한/글 파일 open 시 '상위 버전에서...' 메세지 안 뜨게 하는 방법?
1
1108
1
win32com 으로 hwp 문자열 검색하기 문의
1
222
2
[응용] 엑셀문서 값을 필드에 입력하기 질
1
122
1
표 병합하기 관련
0
140
0
메타태그 삽입 자동화
0
191
1
스크립트 매크로 초기화 하고 싶습니다.
1
270
2
한글 창이 여러 개 존재할 때 pyhwpx 모듈로 접근하는 방법을 알고 싶습니다.
1
271
1
표안의 특정 필드에 있는 이미지를 복사하여 한글 외부에 저장하기
1
273
2
스타일 싹 다 지우고 바탕글로 통일하는 방법 문의드립니다.
1
283
0
하위의 여러 폴더 중 특정폴더의 사진만 추출하기
1
345
2
한글 수식을 자동으로 넣는 코드를 만들었는데, 수식 사이의 간격이 계속 벌어집니다.
1
655
1
보유 특허 검색 페이지에서 검색이 되지 않습니다.
1
137
1
hwp 페이지별 분할 저장하는 코드 관련 문의
0
446
0
한글 문서에 사용된 폰트명 추출
1
644
1





