파이썬 GUI 엑셀 - paisseon GUI egsel

파이썬 GUI 엑셀 - paisseon GUI egsel

|파이썬 엑셀 파일 읽기 함수|


  • 엑셀파일 읽기 함수
import os
import pandas as pd
from tkinter import filedialog
from tkinter import messagebox

#files 변수에 선택 파일 경로 넣기
files = filedialog.askopenfilenames(initialdir="/",\
                 title = "파일을 선택 해 주세요",\
                    filetypes = (("*.xlsx","*xlsx"),("*.xls","*xls"),("*.csv","*csv")))

#파일 선택 안했을 때 메세지 출력
if files == '':
    messagebox.showwarning("경고", "파일을 추가 하세요")    

print(files)    #files 리스트 값 출력

#dir_path에 파일경로 하나씩 넣어서 읽기
for dir_path in files:                                             
    df = pd.read_excel(dir_path, header= 1 , usecols='C, G, I')   #엑셀 파일의 C, G, I 열만 읽기

C_list = []     # C열을 C_list에 생성
G_list = []     # G열을 C_list에 생성
I_list = []     # I열을 C_list에 생성

for i in df.values:
    C_list.append(i[0])		# C열을 C_list에 저장
    G_list.append(i[1])		# G열을 G_list에 저장
    I_list.append(i[2])		# I열을 I_list에 저장

print(C_list)
print(G_list)
print(I_list)

이번 스테이지에서는 데이터를 엑셀로 저장할 수 있는 OpenPyXL패키지 사용법에 대해 배우고, 수집한 데이터를 엑셀파일(.xlsx)에 저장합니다.

OpenPyXL은 파이썬을 활용해서 엑셀파일을 읽고 쓸 수 있는 파이썬 오픈소스 패키지입니다. 엑셀프로그램을 켜서 할 수 있는 대부분의 작업을 OpenPyXL을 통해 할 수 있습니다.

pip 명령어를 사용하거나, 파이참에서 OpenPyXL패키지를 설치합니다. 외부 패키지 설치방법 다시보기 >> 3주차 Stage1.

OpenPyXL은 엑셀의 구조를 그대로 활용하기 때문에, OpenPyXL을 통해 엑셀을 사용하려면 엑셀 구성요소의 이름을 알고 있어야 합니다.

Workbook: 엑셀파일 전체 작업공간, 엑셀파일 자체를 Workbook이라고 부릅니다. Worksheet: 엑셀파일에서 단일 작업공간, 하나의 큰 표라고 생각할 수 있습니다. Cell: 엑셀에서 데이터가 저장되어있는 가장 작은 공간입니다.

# 워크북(엑셀파일)을 원하는 이름으로 저장합니다.

기본적으로 OpenPyXL은 엑셀의 작업순서 그대로 활용하기 때문에 openpyxl.Workbook()은 새로만들기, 워크북.save(파일이름)은 저장하기와 1:1로 대응됩니다.

# A1셀에 hello world!를 입력합니다.

sheet['A1'] ='hello world!'

# 워크북(엑셀파일)을 원하는 이름으로 저장합니다.

워크북.active는 엑셀이 켜져있다고 생각할 때, 현재 활성화되어있는 시트를 선택해줍니다. 시트 안에 특정한 셀에 데이터를 입력하고 싶다면, 리스트의 인덱싱 방법과 마찬가지로 대괄호를 활용하여 시트[셀번호]에 값을 넣어주면 됩니다.

sheet.cell(row=3, column=3).value ="BYE!!"

셀번호를 통해 데이터를 입력하는 방식은 정확한 셀번호를 알지 못하면 입력하기 어렵고 반복작업을 하기 쉽지 않기 때문에 시트.cell(row=m, column=n).value를 이용하면 m행 n열에 데이터를 입력할 수 있습니다.

subject = ["Python", "Java", "HTML", "JavaScript"]

시트.append(리스트)함수를 사용하면, 시트의 데이터가 없는 가장 첫 줄에 데이터를 입력합니다. 이때 append의 괄호 안에는 리스트를 넣어줍니다. 리스트 값의 구분에 따라 열이 구분되어 입력됩니다.

데이터를 가장 쉽게 저장할 수 있는 방법 중 하나이기 때문에 앞으로 가장 많이 사용하게 될 OpenPyXL함수 입니다.

*추가: 알면 좋은 시트 관련 OpenPyXL 함수

sheet1.title = "1st sheet"

sheet2 = wb.create_sheet("2nd sheet")

# sheet1과 sheet2에 동시에 데이터 쓰기

sheet1.cell(row=i, column=1).value = i

sheet2.cell(row=1, column=i).value = i

워크북.create_sheet(시트이름) : 새로운 시트를 원하는 이름으로 만듭니다. 워크북[시트이름]: 특정 시트를 선택합니다. 시트.title(시트이름): 시트의 이름을 바꿉니다.

시트 관련 함수를 사용하면 한 번에 여러개의 시트에 동시에 작업을 할 수 있기 때문에 여러가지 데이터를 동시에 수집할 수 있습니다.

네이버 TV 데이터 수집 결과 엑셀파일로 저장하기

#0. 지난 코드 불러오기(3주차 Challenge1.)

from bs4 import BeautifulSoup

raw = requests.get("https://tv.naver.com/r")

html = BeautifulSoup(raw.text, "html.parser")

# 1위 - 100위 컨테이너 선택자: dl.cds_info

clips = html.select("dl.cds_info")

title = cl.select_one("dt.title").text.strip()

chn = cl.select_one("dd.chn").text.strip()

hit = cl.select_one("span.hit").text.strip()

like = cl.select_one("span.like").text.strip()

from bs4 import BeautifulSoup

sheet.append(["제목", "채널","재생 수","좋아요 수"])

raw = requests.get("https://tv.naver.com/r")

html = BeautifulSoup(raw.text, "html.parser")

엑셀 파일에 데이터를 저장하기 위해서 openpyxl패키지를 가져와서 워크북을 만들고 시트를 선택합니다. 가장 첫줄에 append함수를 활용해서 데이터의 헤더 부분을 만들어줍니다.

#2. 수집한 데이터 쓰기 / 엑셀파일 저장하기

title = cl.select_one("dt.title").text.strip()

chn = cl.select_one("dd.chn").text.strip()

hit = cl.select_one("span.hit").text.strip()

like = cl.select_one("span.like").text.strip()

# append함수에는 리스트 형식으로 데이터를 넣어줍니다.

sheet.append([title, chn, hit, like])

수집된 데이터의 파일 저장 방법은 csv파일과 엑셀파일이 크게 다르지 않습니다. 다만 아래 몇가지 차이점이 있기 때문에 상황에 맞게 수집한 데이터를 저장하는 것이 가장 좋습니다.

  1. 2.

    엑셀파일은 ,또는 \n를 신경쓸 필요없습니다.

  2. 3.

    엑셀파일은 한 번에 여러시트에서 작업할 수 있습니다.

  3. 4.

    엑셀 파일은 인코딩문제에서 조금 더 자유롭습니다.