[아래한글 자동화] 필드를 활용한 "방과후프로그램출석부" 자동 제작 AtoZ
HTML-код
- Опубликовано: 17 янв 2025
- 방과 후 프로그램별로 학생들 출석부를 만드는 일도
바쁜 와중에는 굉장히 번거롭게 느껴질 수 있습니다.
간단한 파이썬 문법으로 10여 줄 코드만 작성해 두고
몇 초만에 후다닥 해결할 수 있는 방법을 보여드립니다.
실습용 예제문서와 소스코드는 아래 링크에서 다운로드하실 수 있습니다.
drive.google.c...
파이썬-아래아한글 자동화 강의
(2025년 1월 29일까지 25% 할인)
inf.run/ChCF
몇 줄 코드로 손이 편해지겠습니다. 감사합니다. ^^😍
친절한 강의 감사합니다!! ^^
안녕하세요! 일상의 코딩님 항상 좋은 영상 올려주셔서 감사합니다. 😊
from pyhwpx import Hwp
def make_table_data(df):
return np.ravel(df.fillna('').values).tolist()
df_list = make_table_data(df)
hwp.put_field_text("test", df_list)
제가 put_field_text 함수를 사용해 데이터를 HWP 파일에 넣으려고 하는데, df_list가 300행이 넘으면 수행하는 데 1분 이상 걸리더라고요. 혹시 이 과정을 더 빠르게 수행할 수 있는 방법이 있을까요?
소중한 조언을 기다리겠습니다. 새해 복 많이 받으세요
yz12033님, 안녕하세요? 제 코드에 다소 문제가 있나봅니다ㅜ 우선은,
1. 백그라운드로 숨기기
화면 렌더링에 상당한 연산이 소요되는 경우, 예를 들어 필드값을 채워서 문서 길이나 페이지수가 바뀌는 경우에는 hwp.set_visible(False)로 백그라운드로 숨기고 작업을 해보시면 경미하게나마 속도향상이 될 것으로 생각됩니다.
2. 저수준 API 직접 사용
속도향상이나 효율화를 위해 pyhwpx 안에서 저수준의 API를 직접 사용하는 방법을 제공하고 있습니다. 필드명이 전부 "test"라면, hwp.put_field_text 라인 대신 아래의 커맨드를 입력해보시기 바랍니다.
```
c = df_list
hwp.hwp.PutFieldText("\x02".join([f"test{{{{{i}}}}}" for i in range(len(c))]), "\x02".join([str(i) for i in c]))
```
이런 방식으로 API를 직접 사용하실 수 있습니다. 방금 간단한 더미데이터로 테스트해봤는데, 약 2000개의 필드에 데이터를 삽입해도 1초 내외 걸립니다. 1분은 확실히 이상하긴 하네요..
혹시 괜찮으시다면 저도 데이터를 한 번 확인해보고 싶은데ㅜ martinii.fun@지메일로 메일 보내주시면 검토 후 적절한 코드를 제안 드리겠습니다.
감사합니다. 행복한 하루 되세요!
(혹시 모르니 `pip install --upgrade pyhwpx`로 최신버전 업데이트도 한 번 부탁드립니다ㅜ)
일상의 코딩님,
먼저, 빠른 답변에 정말 감사드립니다. 백그라운드 숨기기와 제안 주신 코드로 변경해도 동일하더라구요.ㅠㅠ
제가 잘못 수정한건지.. ㅠㅠ
코드와 테스트 파일 메일 드렸습니다. 시간 나실때 확인 부탁 드릴께요. 감사합니다 ㅎㅎ
보내주신 메일 잘 받았습니다. 회신은 드렸지만, 혹시 동일한 문제를 겪는 분들을 위해 댓글을 남겨두려고 합니다. 동일한 필드에 50,000개의 값을 넣는 방식 대비, 10개 필드에 각각 5,000개의 값을 넣는 방식이 10배 정도 빨랐습니다. 아마 한/글 내부의 데이터 입력방식 때문에 이런 차이가 발생하는 듯 합니다.
우선은 12개 열 별로 필드명을 다르게 주시고, flatten()이나 ravel().tolist() 대신, 데이터프레임을 그대로 삽입하는 방식을 추천드립니다. (단, 삽입될 한글 필드명과 데이터프레임의 칼럼명은 서로 일치해야 합니다!!!)
말씀해주신 대로 개선해봤더니, 이제 5초 대로 되네요! 정말 훌륭한 아이디어입니다. 진심으로 감사드려요 ^^ 이렇게 또 하나 배워가네요. 처음 댓글을 달 때는 혹시나했는데, 이렇게 빠르고 친절하게 답변을 주실 줄 몰랐어요. 진심으로 감사드리며, 항상 건강하시고 행복하시길 바랍니다! 아낌없이 주시는 일코님, 정말 감사해요 ㅎㅎ
@auto-c2k 오메, 저야 이 맛에 영상 올리고 댓글 달지요ㅎㅎㅎ
와우 pyhwpx 짱입니당..
20줄도 안됨 ㅡㅡb