NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 학습
  • 매뉴얼

    학습


    Python 뭐라도 해보자! 1부 - 파이썬으로 엑셀 업무 자동화 하기. (Let's do something! - Automating Ex…

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 요즘 유튜브에서 디지탈 노마드 관련 내용들을 많이 보고 있습니다. 대부분 보면 월 천만원 수익을 내고 있고, 너도 할 수 있다라는게 요점인데요. 결국은 그 돈을 버는 방법이 누구나 할 수 있다고 하지만 제가 볼때는 누구나 하는게 아닌거 같습니다-_-; 누구나 할 수 있을만큼 쉬운게 아니라는거죠. 그리고, 사람은 절대로 쉽게 변하지 않는다는걸 빼놓고 얘기하는거 같습니다. 저처럼 게으른 사람은 할 수 없는게 대부분이더라구요^^; "뭐라도 해보자!" 시리즈에서는 파이썬이나 엔지엠 에디터로 무언가를 만들어 보는 내용으로 채울건데요. 파이썬 개발 도구인 Visual Studio Code와 Python은 무료라서 누구나 쉽게 접근할 수 있습니다. 엔지엠 에디터는 유료라서 부담이 되지만요. 아무튼~ 쉽게 접근할 수 있지만, 누구나 결과물을 만드는건 아닙니다. 생각보다 많은 노력이 들어갈 수 있기 때문이죠. 이건 사람마다 다릅니다. 개발자가 보면 적은 노력과 비용으로 결과를 만들 수 있고, 일반인이라면 더 많은 노력과 비용이 들겁니다. 중간에 포기하고 싶을수도 있죠. 그래도~ 뭐라도 해봅시다. 오늘보다 내일은 더 나은 삶을 살고 싶다면 말이죠^^

    d7YiUEy.png

     

     

    Visual Studio Code를 실행하세요. 아직 설치되어 있지 않다면~ [ Visual Studio Code 다운로드 ]를 받고 설치하세요. 통합 개발 환경(IDE, Integrated Development Environment)을 만들어야 개발을 시작할 수 있습니다. 설치는 그리 어렵지 않으니 금방 될겁니다. 자~ 설치가 완료되었으면 아래와 같은 프로그램이 실행 되었을겁니다. 여러분들은 아래와 같지 않을거에요. 저는 이것 저것 만들고 테스트하느라 여러가지가 설정되어 있거든요^^;

    7cJd81X.png

     

     

    자~ 이제 파이썬을 개발하기 위한 환경을 만들어야 합니다. [ 파이썬 개발 환경 만들기 ]를 참고 하세요. 항상 처음에 하는 "Hello NGM!"을 테스트 해보죠~ 아래 동영상을 참고해서 따라 해보세요. 새로운 파일을 하나 생성합니다.

    파일 생성 하기 버튼 클릭

    pn3mNzx.png

     

     

    아래 코드를 작성한 후 Ctrl+Alt+N을 눌러서 실행하세요. 또는 F5 또는 Ctrl+F5가 실행입니다.

    print('Hello NGM!')

    iuW3rd1.gif

     

     

    하단 출력창에 "Hello NGM!"이 표시되는걸 확인할 수 있죠? 이제 엑셀에 대한 내용을 알아볼까요? 파이썬에서 엑셀을 핸들링(조작)하려면 openpyxl 패키지가 필요합니다. 터미널에서 아래 명령어로 설치할 수 있습니다. pip는 파이썬 패키지 관리자로 파이썬 3.x 버전 이후에 기본 포함되었습니다. 보통 ""이라고 부르는데요. "파이프"라고 부르는 개발자도 있습니다. 뭐 중요한건 아니니 넘어갑시다.

    pip install openpyxl

     

    설치가 완료되면 여러분들도 아래와 같은 메시지를 출력창에서 확인할 수 있습니다.

    PS D:\MyWorkspace> pip install openpyxl
    Collecting openpyxl
      Downloading openpyxl-3.0.7-py2.py3-none-any.whl (243 kB)
         |████████████████████████████████| 243 kB 2.2 MB/s
    Collecting et-xmlfile
      Downloading et_xmlfile-1.1.0-py3-none-any.whl (4.7 kB)
    Installing collected packages: et-xmlfile, openpyxl
    Successfully installed et-xmlfile-1.1.0 openpyxl-3.0.7
    WARNING: You are using pip version 21.1.2; however, version 21.1.3 is available.
    You should consider upgrading via the 'C:\Users\ngmas\AppData\Local\Microsoft\WindowsApps\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\python.exe -m pip install --upgrade pip' command.
    PS D:\MyWorkspace> 

     

    패키지 또는 라이브러리 또는 모듈은 비슷한 의미로 사용됩니다. 라이브러리는 가장 큰 개념으로 패키지 또는 모듈을 묶어 놓은 것을 말하고, 모듈은 스스로 동작할 수 있는 컴파일된 함수 또는 클래스의 집합입니다. 모듈은 하나의 기능을 담당합니다. 패키지는 이런 모듈들을 모아놓은 작은 라이브러리라고 할 수 있습니다. 예를 들어서 핸드폰이 있다고 생각 해보세요. 키패드, 디스플레이, 카메라등등은 모듈입니다. 사진을 찍기 위해서는 여러가지 모듈이 필요합니다. 사진을 표시하기 위한 화면과 카메라 그리고 셔터를 누르는 키패드등등... 사진을 찍기 위한 어떤 행위를 위해서는 패키지가 필요하죠. 핸드폰을 만들기 위해서는 라이브러리가 필요한거구요. 핸드폰은 카메라뿐만 아니라 인터넷, 음성 녹음, 터치 반응 모듈, 라이다 센서, 자이로 센서등등 많은 모듈과 패키지가 들어 있습니다. 핸드폰 라이브러리를 이용하면 우리도~ 핸드폰을 만들수 있게 됩니다^^

    mQXuBsJ.png

     

     

    이제 엑셀 파일을 만들어 봅시다. 아래 코드를 붙여넣기 하고 실행하세요. 좌측 "탐색기"에 "example.xlsx" 파일이 생성되어 있을겁니다.

    from openpyxl import Workbook
    
    # 워크북을 생성합니다. (Excel 생성)
    wb = Workbook()
    # 워크북의 활성화된 시트를 가져옵니다.
    ws = wb.active
    # 시트의 탭 이름을 'NGM Sheet'로 설정합니다.
    ws.title = "NGM Sheet"
    # 워크북을 저장합니다. (Excel 저장)
    wb.save('example.xlsx')
    # 열려 있으면 엑셀 파일을 닫습니다. 
    # 읽기 전용 및 쓰기 전용 모드에만 영향을 줍니다.
    wb.close()

    snx4YNy.png

     

     

    엑셀 파일을 열어서 시트 이름이 "NGM Sheet"로 설정 되었는지 확인 해보세요.

    MzUyHLG.gif

     

     

    이렇게해서 엑셀 파일을 만드는 법에 대해 알아봤습니다. 이제는~ 셀에 내용을 입력해야겠죠? 아래 코드를 붙여넣기 하고 실행하세요.

    from openpyxl import *
    from random import *
    
    # 엑셀 파일을 불러옵니다.
    wb = load_workbook('example.xlsx')
    # 엑셀에 새로운 시트를 추가하고, 시트를 가져옵니다.
    ws = wb.create_sheet('NGM')
    # 추가한 시트의 탭 컬러를 Yellow로 설정합니다.
    ws.sheet_properties.tabColor = 'ffff00'
    
    # 행과 열을 10번 반복하면서 50~100 사이의 값을 랜덤하게 넣어줍니다.
    for r in range(1, 11):
        for c in range(1, 11):
            ws.cell(row=r, column=c, value=randint(50, 100))
    
    # 워크북을 저장합니다. (Excel 저장)
    wb.save('example.xlsx')
    # 열려 있으면 엑셀 파일을 닫습니다. 
    # 읽기 전용 및 쓰기 전용 모드에만 영향을 줍니다.
    wb.close()

    70yTlmt.png

     

     

    엑셀에 추가한 NGM 시트는 탭의 색이 노란색으로 설정되고, 데이타가 각각 랜덤하게 들어간 것을 알 수 있습니다. 수식을 이용한 합계를 내봅시다.

    from openpyxl import *
    from openpyxl.utils import *
    from random import *
    
    # 엑셀 파일을 불러옵니다.
    wb = load_workbook('example.xlsx')
    # 엑셀에 새로운 시트를 추가하고, 시트를 가져옵니다.
    ws = wb.get_sheet_by_name("NGM")
    # 추가한 시트의 탭 컬러를 Yellow로 설정합니다.
    # ws.sheet_properties.tabColor = 'ffff00'
    
    # for r in range(1, 11):
    #     for c in range(1, 11):
    #         ws.cell(row=r, column=c, value=randint(50, 100))
    
    # 합계를 계산하는 수식을 넣어줍니다.
    for c in range(1, 11):
        # 합계를 표시할 셀을 가져옵니다.
        cell = ws.cell(row=12, column=c)
        # 컬럼의 레터를 알아내기 위한 함수입니다.
        letter = get_column_letter(c)
        # 합계를 12번째 로우에 추가 해줍니다.
        ws.cell(row=12, column=c, value='=sum('+letter+'1:'+letter+'11)')
    
    # 워크북을 저장합니다. (Excel 저장)
    wb.save('example.xlsx')
    # 열려 있으면 엑셀 파일을 닫습니다. 
    # 읽기 전용 및 쓰기 전용 모드에만 영향을 줍니다.
    wb.close()

    70hOtgc.png

     

     

    합계도 잘 표시가 되는군요~ 어떤 정형화된 엑셀 양식을 매일같이 수집해서 매인 시스템에 다시 입력해야 한다면, 자동화를 도입하는게 좋을겁니다. 단순 반복적인 일에 너무 많은 시간을 낭비하는건 아닌지 생각해봐야 합니다. 항상 그렇지만~ 아침에 출근해서 어제 온 이메일에서 엑셀을 다운로드 받고 매인 시스템으로 옮겨 적는 일을 반복하지는 않으신가요? 아침에 자동화 프로그램을 돌려놓고 커피 한잔하면서 오늘 해야할 중요한 일들을 정리해보세요^^; 제 경우에는 소프트웨어를 개발하고 리그레이션 테스트를 자동화 했었습니다. 퇴근 시간에 걸어놓고 아침에 출근해서 수천건에 달하는 테스트를 확인만 했었습니다.

     

    엔지엠 에디터를 사용하면 개발 환경 구성이나 코딩이 필요 없습니다. 아래와 같이 파일을 선택하고, 시트 이름을 입력하세요.

    nNXPFDK.png

     

     

    시각화 도구를 통해 데이타를 미리 확인하고, 다른 포멧으로 저장할수도 있습니다.

    xhxEXba.png

     

     

    아주 간단하게 원하는 셀의 값과 수식을 확인할 수 있습니다. 이 값들은 데이타베이스로 저장할 수 있고 2차 가공이 가능합니다. 또한, 조건에 따라 변경하기도 쉽습니다. 많은 시스템이 원본을 가공해서 2차 데이타를 만드는데 많은 시간과 비용을 지불하고 있습니다. 예를 들어서 010, 1234, 5678 번호가 나뉘어져 있을 수 있습니다. 매인 시스템은 하나의 셀에 010-1234-5678과 같이 넣어야 합니다. 수천명의 고객 정보를 사람이 수동으로 입력하는건 많은 시간이 소요됩니다. 또한, 휴먼 에러(오입력, 실수등등)로부터 자유로울 수 없습니다. 지금 당장 시스템화 해야 합니다!

    7nuHY6a.png

     

     

    다음에는~ 엑셀에 대해 좀 더 디테일한 부분을 알아보도록 할께요~ 기타 궁금한 사항이나 에러가 발생하신다면 증상을 정리해서 커뮤니티의 질문과 답변 게시판에 남겨주세요. 확인 후 해결 방법이나 솔루션에 대해 답변 드리겠습니다. 여러분들도~ 뭐라도 해보는게 좋지 않을까요^^; 일단 비주얼 스튜디오 코드부터 설치해보세요~!!!

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

    등록된 댓글이 없습니다.