아래아한글이 익숙한 대한민국 공무 직원들에게는
구글설문이나 MS폼즈도 좋지만,
자료전송을 거쳐서 엑셀로 취합하고 다시 한글로 변환하고 이런 작업이 번거롭습니다.
시간 잘 가는 걸 좋아하시거나 기존 방법을 좋아하시는 분들은 하던 대로 하시고(취존)
아래아한글로 설문파일을 만들어서 취합을 원하시는 분들은
아래 코드와 한/글파일을 참고해 주시기 바랍니다.
설문조사를 위한 한/글 파일은 아래와 같이 생겼습니다. (예제라서 간단하게..)
그리고 코드는 아래와 같습니다.
import os
from collections import defaultdict
import win32com.client as win32
hwp = win32.gencache.EnsureDispatch("HWPFrame.HwpObject")
hwp.XHwpWindows.Item(0).Visible = True
# hwp.RegisterModule("FilePathCheckDLL", "SecurityModule")
hwp.Open(os.path.join(os.getcwd(), "radio.hwp"))
# 답변 기록할 사전 생성
answer_dict = defaultdict(list)
# 라디오버튼값 추가
doc = hwp.XHwpDocuments.Item(0)
for i in range(doc.XHwpFormRadioButtons.Count):
item = doc.XHwpFormRadioButtons.Item(i)
if item.Value:
answer_dict[item.RadioGroupName] = item.Caption
# 체크리스트값 추가
for i in range(doc.XHwpFormCheckButtons.Count):
item = doc.XHwpFormCheckButtons.Item(i)
answer_dict[item.GroupName].append(item.Caption)
# 위 한 줄은 defaultdict(list)라서 key가 없어도 append가 가능함.
# answer_dict가 일반 dict자료형이면 아래처럼 if문으로 추가해야 함.
# if item.GroupName not in answer_list.keys() and item.Value:
# answer_dict[item.GroupName] = [item.Caption]
# elif item.GroupName in answer_list.keys() and item.Value:
# answer_dict[item.GroupName].append(item.Caption)
# 텍스트 추가
for i in range(doc.XHwpFormEdits.Count):
item = doc.XHwpFormEdits.Item(i)
answer_dict[item.GroupName] = item.Text
# 한/글 닫기
hwp.Quit()
# 엑셀 열기
excel = win32.gencache.EnsureDispatch("Excel.Application")
wb = excel.Workbooks.Add()
ws = wb.Worksheets(1)
excel.Visible = True
# 엑셀에 (원하는 순서대로) 값 넣기
ws.Range(ws.Cells(1,1), ws.Cells(1,4)).Value = (
answer_dict["성별"],
answer_dict["나이"],
answer_dict["suggest"],
", ".join(answer_dict["interest"]),
)
아래는 예제코드 실행을 위한 한/글 파일을 첨부하였습니다.
은근히 그룹네임이나 캡션 설정하는 게 번거로운 일이기 때문에 ...
위 코드를 실행하려면,
1. 아래아한글과 엑셀이 설치되어 있어야 하며
2. 파이썬과 pywin32 패키지가 설치되어 있어야 합니다. (맘편하게 아나콘다가 설치되어 있으면 제일 좋습니다.)
다음 포스팅에서 상세한 사용법과, 위 코드를 작성하기 위한 API매뉴얼 보는 법 등을 다루겠습니다.
감사합니다.
행복한 하루 되세요!!
'아래아한글 자동화 > python+hwp 중급' 카테고리의 다른 글
1. 파이썬-아래아한글 자동화를 위해 먼저 할 일 두 가지! (4) | 2020.08.06 |
---|---|
[파이썬-한/글] 표 안에서 현재 셀주소 알아내기 & 이동하기 (7) | 2020.07.31 |
[파이썬-한/글] 보안모듈 설치방법(귀찮은 보안팝업 제거) (19) | 2020.07.31 |
댓글