본문 바로가기
개발기록/python

Python 엑셀 자동화 프로그램 만들기 (엑셀 다루기, python exe 실행파일)

by spectrum20 2022. 9. 22.
반응형

python 설치

https://www.python.org/downloads/

 

Download Python

The official home of the Python Programming Language

www.python.org

 

환경변수 설정

윈도우 검색창 > 시스템 환경 변수 편집

환경변수 > 시스템 변수 > Path 더블클릭

 

Python이 설치된 폴더를 찾아서 Python 폴더와 Scripts 폴더의 경로를 붙여넣기 한다

내 경우에는 아래와 같은 경로에 있다

 

C:\Users\Administrator\AppData\Local\Programs\Python\Python311

C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Scripts

 

visual studio로 python 개발하기

visual studio code에서 extension을 열어준 다음, python을 검색하여 설치해준다

다음으로, 개발 폴더를 만들어주고 파일생성 버튼을 눌러 .py 파일을 생성한다 

hello world 코드를 입력하고 Ctrl+F5를 눌러서 코드를 실행해주자

(한 줄씩 실행시키려면 Shift + Enter)

이때, interpreter를 설정하라는 오류가 뜨면, 시키는데로 interpreter를 설정해준다

cmd창에 hello world!가 잘 출력된다

 

 

 

visual studio code 가상환경 생성

visual studio에서 python으로 개발하기 위해 python을 설치해준다

python 개발 폴더를 생성해준다

F1번을 누른 뒤, 

>Terminal: Select Default Profile

에서 CMD를 기본 terminal로 설정해준다

메뉴창에서 Terminal 클릭 후, New Terminal을 클릭

python -m venv 가상환경이름

으로 가상환경 생성하면 해당 폴더에 가상환경 파일이 생성된다

F1키를 눌러 Select Interpreter를 눌러서, 위에서 생성한 가상환경을 선택해준다

또는, 생성된 가상환경 폴더로 이동 cd ..가상환경이름/Scripts 한 뒤, Activate 로 실행시켜준다

터미널창을 끈 뒤, 다시 New Terminal을 클릭하여 terminal 창을 열어주면 됨

 

 

 

패키지 설치

cmd창에서 필요한 패지지들을 설치해준다

pip install pandas         # 데이터 조작을 위한 패키지
pip install openpyxl      # xl파일 조작을 위한 패키지
pip install pyinstaller    # exe 파일 생성을 위한 패키지

 

 

코드

'새 폴더'에 아래와 같이 3개의 파일이 들어있다

copy.xlsx 파일과 copy1.xlsx 파일의 특정셀을 불러와서 pytest에 넣어주는 코드를 만들어보자

 

 

1. 모듈 import (+변수 입력)

import os
import pandas as pd
from tkinter import filedialog
from tkinter import messagebox
from tkinter import *
from openpyxl import load_workbook


################################
# 변수 입력 #
model_name = "ABC123"
date = '220901'
################################

 

 

2. tkinter 모듈 filedialog 로 폴더 선택

root = Tk()
dir_path = filedialog.askdirectory(parent=root, initialdir='D:/', title='폴더를 선택하세요')

if dir_path == '':
    messagebox.showwarning("경고","파일을 추가 하세요")

 

python의 GUI 프로그래밍 모듈인 tkinter를 이용해서, 파일이 들어있는 폴더를 선택한다

initialdir로 폴더를 선택할 시작경로를 지정해준다

코드를 실행하면 아래처럼 D:에서 폴더 선택 창이 열린다

 

 

3. 파일 리스트 불러오기

file_list = os.listdir(dir_path)

file_name = ["wb1", "wb2", "wb3"]

for i in range(3):
    print(i,"-",file_name[i],"-",file_list[i])
    globals()[file_name[i]] = load_workbook(dir_path+'/'+file_list[i])

 

os.listdir로 위에서 선택한 폴더의 파일리스트를 가져와서 file_list 에 넣어준다

다음으로 file_name을 담을 변수명 List 를 만들어준 뒤

globals()로 전역변수를 생성해서, 변수에 엑셀파일을 로드해준다

 

코드를 실행시키면, 아래와 같이 변수에 엑셀파일이 로드된다

wb1 = D:/.../copy.xlsx

wb2 = D:/.../copy2.xlsx

wb2 = D:/.../pytest.xlsx

 

 

4. 엑셀파일 시트 다루기

# 변수에 엑셀의 워크시트 매칭
cp_ws = wb1['Sheet1']
cp1_ws = wb2['Sheet1']

py_ws1 = wb3.worksheets[0]
py_ws2 = wb3.worksheets[1]
py_ws3 = wb3.worksheets[2]

# 워크시트 이름 생성하기
py_ws1.title = model_name+'_'+date
py_ws2.title = model_name+'_'+date+'_1'
py_ws3.title = model_name+'_'+date+'_2'

위 코드로, 각 변수에 엑셀파일의 시트를 넣어준다

 

 

5. 엑셀파일 셀 값 가져오기

for row in range(2,7):
     for col in range(1,3):
     	 # 엑셀 값 가져오기
         cell1 = cp_ws.cell(row+4, col+2).value
         cell2 = cp1_ws.cell(row+4,col+2).value
         # 엑셀 값 입력하기
         py_ws2.cell(row,col,value=cell1)
         py_ws3.cell(row,col,value=cell2)

 

아래 왼쪽 엑셀파일의 6~10행, 3~4열의 값을 가져온 다음, 오른쪽 엑셀파일의 2,3번째 시트에 2~6행, 1~2열에 입력해준다

(좌) cp_ws, (우) py_ws

 

 

6. 엑셀파일 저장

wb3.save(dir_path+'/'+file_list[2])

완성된 엑셀파일(워크북)을 저장해준다

 

 

7. 완성코드 

import os
import pandas as pd
from tkinter import filedialog
from tkinter import messagebox
from tkinter import *
from openpyxl import load_workbook



################################
# 변수 입력 #
model_name = "ABC123"
date = '220901'
################################


root = Tk()
dir_path = filedialog.askdirectory(parent=root, initialdir='D:/', title='폴더를 선택하세요')

if dir_path == '':
    messagebox.showwarning("경고","파일을 추가 하세요")
    
file_list = os.listdir(dir_path)
file_name = ["wb1", "wb2", "wb3"]
for i in range(3):
    print(i,"-",file_name[i],"-",file_list[i])
    globals()[file_name[i]] = load_workbook(dir_path+'/'+file_list[i])



cp_ws = wb1['Sheet1']
cp1_ws = wb2['Sheet1']
py_ws1 = wb3.worksheets[0]
py_ws2 = wb3.worksheets[1]
py_ws3 = wb3.worksheets[2]


py_ws1.title = model_name+'_'+date
py_ws2.title = model_name+'_'+date+'_1'
py_ws3.title = model_name+'_'+date+'_2'



for row in range(2,7):
     for col in range(1,3):
         cell1 = cp_ws.cell(row+4, col+2).value
         cell2 = cp1_ws.cell(row+4,col+2).value
         py_ws2.cell(row,col,value=cell1)
         py_ws3.cell(row,col,value=cell2)


wb3.save(dir_path+'/'+file_list[2])

 

 

코드를 실행시키면 아래와 같이 pytest.xlsx 파일이 수정된다

 

(수정 전)

pytest.xlsx

(수정 후)

pytest.xlsx

 

 

 

참고하면 좋은 자료 ↓

2024.03.10 - [개발기록/python] - [python] CSV 파일 합치기 프로그램 만들기 (tkinter GUI)

 

[python] CSV 파일 합치기 프로그램 만들기 (tkinter GUI)

회사에서 일할 때 쓰려고 만든 csv 파일 합치는 매크로 파일야매로 만들고 ChatGPT 사용해서 교정받았다(ChatGPT 미첫다...)  실행방법 1. 코드를 실행하면 아래와 같은 GUI 창이 나타난다 2. 정렬순

spectrum20.tistory.com

 


+ python 실행파일 만들기

먼저 cmd 창에서, pip install pyinstaller를 실행시켜서 패키지를 설치해준다

다음으로, cmd에서 exe파일로 만들 파이썬 파일(.py) 가 있는 폴더로 이동한다

해당 경로에서 pyinstaller 파일이름.py를 실행시켜 준다

완료되면 build 와 dist 폴더가 생성되는데, dist 폴더내에 실행파일 존재

 

콘솔창 안나오게 -w

pyinstaller -w 파일이름.py

한 파일로 생성 -F

pyinstaller -w -F 파일이름.py

 

 

계속 기다리다가, 아래처럼 successfully라고 뜨면 완료

 

 

.py 파일이 있는 위치에 build, dist 폴더 생성

dist폴더안에 exe파일이 들어있다

 

 

 

반응형

댓글