파이썬-한/글 자동화, 실무에선 어떻게 쓰나? [파이썬으로 한컴오피스 한글2018 조작하는 방법4 : 중간실습(50분 분량)]

Описание к видео 파이썬-한/글 자동화, 실무에선 어떻게 쓰나? [파이썬으로 한컴오피스 한글2018 조작하는 방법4 : 중간실습(50분 분량)]

(느림주의!) 네 번째 영상입니다. 이번에는 50분 정도의 영상입니다. 파이썬에서 많이 사용되는 기본 모듈 중 os, shutil, re, datetime, time 등을 사용해봅니다. 52주 분량의 주간보고 샘플파일을 만드는 실습을 라이브코딩으로 진행해보면서 한컴오피스 아래아한글2018의 API에 익숙해지실 수 있도록 구성해보았습니다. 출퇴근길에 틀어놓지 마시고, 한 시간 이상 충분히 여유를 갖고 컴퓨터 앞에서 동영상을 보면서 차근차근 따라해 보시기를 추천드립니다. 감사합니다.

영상에서 사용한 프로그램 : 한컴오피스 한/글2018, Pycharm
영상에서 사용한 모듈 : win32com, os, shutil

[전체코드]

```python3
import os
import shutil

os.getcwd()
os.chdir(r'C:\Users\smj02\Desktop\주간실적')
file = os.listdir()[0]
for i in range(2, 53):
shutil.copy(file, file.split('(')[0] + f'({i:0>2}주차).hwp'.format(i))

os.listdir()

a = os.listdir()[0]

a[10:]
a[11:]

'100주차).hwp'.split('주')[0]

import re
re.findall(r'\d', a)
re.findall(r'\d+', a)[1]
re.findall(r'\d+', a[11:])[0]
re.match(r'\d+', a[11:]).group()

파일을 열어본다.
파일명에서 "몇주차"를 추출해서 누름틀 안에 집어넣는 작업

import win32com.client as win32

hwp = win32.gencache.EnsureDispatch('HWPFrame.HwpObject')
hwp.RegisterModule("FilePathCheckDLL", "SecurityModule") # 보안모듈

import win32gui

hwnd = win32gui.FindWindow(None, '빈 문서 1 - 한글')
win32gui.ShowWindow(hwnd, 5)

import re
from time import sleep

for i in os.listdir():
몇주차 = re.match(r'\d+', i[11:]).group()
hwp.Open(os.path.join(os.getcwd(), i))
sleep(0.05)
hwp.PutFieldText('주차', int(몇주차))
hwp.Save(save_if_dirty=False)
sleep(0.05)
print(hwp.GetFieldText('주차'))
hwp.Run('FileClose')

확인해보자

check_list = []
for i in os.listdir():
hwp.Open(os.path.join(os.getcwd(), i))
sleep(0.05)
주차 = hwp.GetFieldText('주차')
print(주차)
check_list.append(주차)
hwp.Run('FileClose')
len(check_list) # == 100

for i in range(2, 53):
if str(i) not in check_list:
print(i)

from random import randint as 랜덤

랜덤(1, 10) # 인덱스와 헷갈리지 말자. 이건 10을 포함한다.

누계 = 0
for i in os.listdir():
hwp.Open(os.path.join(os.getcwd(), i))
sleep(0.5)
hwp.PutFieldText('월당', 랜덤(1, 10))
누계 += int(hwp.GetFieldText('월당'))
hwp.PutFieldText('월누', 누계)
hwp.PutFieldText('화당', 랜덤(1, 10))
누계 += int(hwp.GetFieldText('화당'))
hwp.PutFieldText('화누', 누계)
hwp.PutFieldText('수당', 랜덤(1, 10))
누계 += int(hwp.GetFieldText('수당'))
hwp.PutFieldText('수누', 누계)
hwp.PutFieldText('목당', 랜덤(1, 10))
누계 += int(hwp.GetFieldText('목당'))
hwp.PutFieldText('목누', 누계)
hwp.PutFieldText('금당', 랜덤(1, 10))
누계 += int(hwp.GetFieldText('금당'))
hwp.PutFieldText('금누', 누계)
hwp.Save(save_if_dirty=True)
sleep(0.5)
hwp.Run('FileClose')

import datetime as dt

startdate = dt.datetime(2018, 12, 31)

date.weekday()
'월화수목금토일'[date.weekday()]
'2018. 12. 31.(월)


delta = 0
for file in os.listdir():
hwp.Open(os.path.join(os.getcwd(), file))
for 요일 in "월화수목금토일":
date = startdate + dt.timedelta(days=delta)
hwp.PutFieldText(요일, date.strftime('%y. %m. %d.') + f"({'월화수목금토일'[date.weekday()]})")
delta += 1
hwp.Save()
sleep(0.05)
hwp.Run('FileClose')
```

끝.

Комментарии

Информация по комментариям в разработке