본문 바로가기
아래아한글 자동화/pyhwpx 사용법

[pyhwpx] dict나 df를 바로 표로 만들어주는 메서드 : table_from_data

by 일코 2024. 1. 10.

한/글의 표를 자동으로 작성하는 여러 가지 기법이 있다.
가장 많이 사용되는 방법은 아무래도 필드를 사용하는 방법일텐데,
그밖에도 이미 엑셀이나 dict, 데이터프레임 등으로 만들어진 데이터를
한/글에 삽입해야 할 때에는, 그 과정이 상당히 까다롭다.


그래서 table_from_data 메서드를 추가해보았다.

table_from_data의 기본적인 사용법은 아래와 같다.
아래와 같이 학급성적 dict가 있다고 가정하면,

score = {
    "ilco": {"kor": 90, "eng": 100, "mat": 80, "soc": 70, "sci": 100},
    "martin": {"kor": 88, "eng": 77, "mat": 99, "soc": 100, "sci": 60},
    "olive": {"kor": 67, "eng": 78, "mat": 89, "soc": 91, "sci": 100},
    "yebb": {"kor": 100, "eng": 100, "mat": 100, "soc": 100, "sci": 100},
}

hwp.table_from_data(score) 라고 입력하면
아래와 같이 표가 삽입된다.

행/열 변환은 transpose=True

근데, 데이터를 가만히 보니?
행과 열이 반대로 되어 있는 느낌이다.
과목이 열방향으로, 학생이 행방향으로 작성돼야 하는데?

Wk이런 경우에는 transpose=True를 추가하면 행과 열이 반대로 전치된다. 기본값은 False

왼쪽위(첫 번째) 셀은 항상 "구분" 아니던가?

행정 하시는 분들은 항상 첫 번째 셀에는 고민없이 "구분"을 채우시리라 생각한다.

왼쪽 위 빈칸은 header0="구분" 식으로 파라미터를 줘서 채울 수 있다. (기본값은 빈 문자열, "")

글자처럼 취급 treat_as_char

create_table 메서드와 마찬가지로
treat_as_char 파라미터를 통해 글자처럼 취급 여부를 선택할 수 있다. (기본값은 False)

파라미터 설명은 여기까지.

참고사항

① 표가 페이지를 넘겼을 때, 제목행이 반복된다.

아래아한글의 기능인 "제목 셀"이 기본적으로 활성화되어 있기 때문에,
표가 한 페이지를 넘어가는 경우 제목셀이 반복된다.
(이를 해제하고 싶다면 header=False를 주면 된다.)

② dict 대신 list나 데이터프레임을 사용할 수도 있다.

사실 내부적으로는 다 df로 변환된다.
그래서 df로 변환할 수 있는 list는 당연히 삽입 가능하다.

일부러 transpose파라미터 대신 df.T를 사용했다. 결과는 동일

 

③ 엑셀이나 csv파일의 경로를 넣어도 된다.

이런 기능까지 넣어도, 누가 쓰기나 할까 싶기는 했는데 그냥 만들어보았다. (상대경로 입력 가능)

여기까지 pyhwpx 모듈의
table_from_data 메서드에 대해 알아보았다.

 

마치며

더보기

개발이란 게 쉽지 않구나...

아직도 큰 뼈대에 대한 고민이 풀리지 않고,
단순히 편의함수 모음처럼 1차원적으로 진행되는 느낌이다.
(편의함수 모음으로 끝나더라도 괜찮긴 한 걸까?)

하여튼 심적으로 다소 맥이 빠지는 중이다.

누가 피드백을 주는 것도 아니고,
현장에서 떠난지도 오래 되어서 행정 실무 감도 다 잃어버렸다.
설상가상으로 한컴에서는 웹한글 기안기와 SDK 기반 체제로 돌아서고 있으니
오토메이션 API는 조만간 버려질 기술이 아닌가 하는 우려도 든다.
(어도비 플래시처럼...)
부정적인 생각이 많이 드는 요즘...

 

댓글