티스토리 뷰

반응형

youtu.be/nIc_PBhtAGM

모든 강의 자료 : www.codingnow.co.kr/

이전 강의에 이어서 파이썬의 pyautogui를 사용하여 엑셀 자동화를 해보겠습니다.

여기서는 pyautogui를 사용하여 한글을 입력하는 방법을 설명하고 있습니다.

pyautogui에서 한글 입력방법은 pyperclip을 사용하여 문자열을 clipboard에 저장하고 이것을 붙여넣는 방법으로 진행합니다.

 

pyautogui의 hotkey, press, typewrite등의 함수를 사용하여 키보드입력을 하며

locateCenterOnScreen함수를 사용하여 저장된 이미지를 통해 좌표를 구하게 됩니다.

 

자세한 사항은 동영상 강의를 참고해주세요.

 

엑셀의 좌표를 구하기 위해 두가지 이미지를 캡쳐하여 사용하였습니다.

test01.png
0.00MB
test02.png
0.00MB

test.xlsx
0.01MB

[강의소스코드]

import pyautogui
import pyperclip
import time

student = [
    ('김철수','90','85','75'),
    ('홍길동','90','75','85'),
    ('김영희','80','95','95')
    ]

poi = pyautogui.locateCenterOnScreen('test01.png', confidence=0.8)
if poi != None:
    pyautogui.doubleClick(poi, duration=0.5)
    time.sleep(5)
    #이전내용 지우기
    pyautogui.press('esc')
    pyautogui.hotkey("ctrl", "a")#전체선택
    pyautogui.press(['del','home'],interval=0.01)#지우고 앞으로 이동

    pyautogui.hotkey("ctrl", "g")
    time.sleep(0.5)
    pyautogui.typewrite('a1', interval=0.01)  # 제일 처음으로 이동
    pyautogui.press('enter')

    #내용입력 시작하기
    time.sleep(1)
    pyperclip.copy("성명\t국어\t영어\t수학")
    time.sleep(0.1)
    pyautogui.hotkey("ctrl","v")
    pyautogui.press(['home', 'enter'], interval=0.1)

    for st in student:
        pyperclip.copy(st[0])
        pyautogui.hotkey("ctrl",'v')
        pyautogui.press('right')

        pyautogui.typewrite('{}'.format(st[1]),interval=0.01)
        pyautogui.press(['right'])
        pyautogui.typewrite('{}'.format(st[2]),interval=0.01)
        pyautogui.press(['right'])
        pyautogui.typewrite('{}'.format(st[3]),interval=0.01)
        pyautogui.press(['enter','home'])

    #총점, 평균 구하기
    pyautogui.typewrite(['up', 'up', 'up', 'up'], interval=0.1)
    pyautogui.typewrite(['right', 'right', 'right', 'right'], interval=0.1)
    pyperclip.copy('총점\t평균')
    time.sleep(0.1)
    pyautogui.hotkey("ctrl", "v")
    pyautogui.press('down')

    for i in range(len(student)):
        pyautogui.typewrite(f'=sum(A{2+i}:D{2+i})', interval=0.01)
        pyautogui.press('right')
        pyautogui.typewrite(f'=AVERAGE(A{2+i}:D{2+i})', interval=0.01)
        pyautogui.press(['enter','left'])

    #표 그리기
    pyautogui.press('esc')
    pyautogui.hotkey("ctrl", "g")
    time.sleep(0.5)
    pyautogui.typewrite('a1:f4', interval=0.1)
    pyautogui.press('enter')

    poi = pyautogui.locateCenterOnScreen('test02.png', confidence=0.8)
    if poi != None:
        pyautogui.click(poi.x+5, poi.y+25, duration=0.5)
        time.sleep(0.5)
        pyautogui.press('a')
반응형