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

taehee.lee님의 프로필 이미지
taehee.lee

작성한 질문수

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

표의 행 부분(다중)을 반복 질문

해결된 질문

작성

·

411

1

 

안녕하세요.

일코님 강의 잘 보고 있습니다.

아래그림과 같은 표에서 빨간색 부분만 다중 행(동적으로 Data수량만큼)으로 만들고 싶은데,

방법이 생각나지 않아.. 문의 드려요.. (답변 미리 감사드립니다.)

 

q1.png

답변 1

1

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

시연화면 먼저 보여드립니다.

전체 코드와 실행방법은 아래 적어두었습니다.

image

 

 

 

태희님 안녕하세요^^

해결방법에는 여러 가지가 있는데,

제일 간단한 방법은 역시 시연화면처럼 복사-붙여넣기를 활용하는 것입니다.

  1. 채울 셀에 모두 셀필드를 매겨놓은 상태에서 시작합니다.

  2. 반복되는 부분만 복사를 해서 데이터 갯수만큼 붙여넣기 반복을 실행합니다. (표가 모두 분리되어 있겠지요?)

  3. 그 다음은 표창장 만들기 같은 예제처럼, 반복되는 필드 각각에 PutFieldText로 값을 채우고

  4. 마지막으로 모든 표를 병합합니다. 코드는

    hwp.Run("TableMergeTable"), 단축키는 Ctrl-NZ입니다.

위 네 과정만 수행하면 됩니다.

 

===============

우선 예시데이터는 아래와 같이 엑셀로 만들어 두었습니다.

image

한/글에는 셀필드 작업까지는 수작업으로 해 두었습니다.

image

이제 주피터노트북이나 파이참을 켭니다. (엑셀파일은 열려 있지 않아도 됩니다. 한/글 문서는 열어 두세요.)

아래 코드를 실행합니다. (엑셀파일 경로는 유의하세요ㅎ)

from pyhwpx import Hwp
import pandas as pd


hwp = Hwp()
df = pd.read_excel("./데이터.xlsx")

# 반복될 부분 잘라내기(*****수작업 필요*****)

# df 갯수만큼 반복될 부분 붙여넣기
for i in range(len(df)):
    hwp.Paste()


# 필드 채우기(필드명과 df 칼럼명이 일치하면 한 방에 됨)
hwp.put_field_text(df)

# 모든 표 다시 병합하기
# 1번 표(제목표)로 커서를 옮긴 후
# 아래 코드 실행
while True:
    if not hwp.TableMergeTable():
        break

수작업을 완전히 빼거나 팝업이 안 뜨게 할 수도 있지만,
이 정도로만 손이 가게 합의하면 코드가 10줄을 안 넘기네요^^

 

유튜브로도 공유해놓으니 한 번 참고해 주시기 바랍니다.

https://youtu.be/OppOvxu_LGo 

잘 이해가 안 되는 부분이 있으면 물어봐주시고,

본 답변이 도움이 되었길 바랍니다.

행복한 하루 되세요^^

 

taehee.lee님의 프로필 이미지
taehee.lee

작성한 질문수

질문하기