.KAZ
F-Man World!
.KAZ
전체 방문자
오늘
어제

공지사항

  • 시작하다
반응형
  • All (37)
    • 사회초년생 (7)
      • 정책 (2)
      • 블로그 (1)
      • 책 (4)
    • 경제 (19)
      • 재무설계 (3)
      • 주식 (0)
      • 부동산 (0)
      • 보험&연금 (0)
      • 세금 (3)
      • 금융 경제 지식 (13)
    • Python (9)
      • Basic (4)
      • 크롤링(스크래핑) (5)
      • 주식 자동매매 프로그램 (0)
    • 생산성 (0)
      • 옵시디언 (0)
    • Side Hustle (2)

블로그 메뉴

  • Notion.KAZ
  • Tstory
  • 태그 클라우드
  • 방명록

인기 글

최근 글

태그

  • 파이썬
  • PYTHON
  • 금융
  • 크롤링
  • beautifulsoup4
  • 금융경제지식
  • 금융이슈
  • 재무설계
  • 연말정산
  • 파이어족
hELLO · Designed By 정상우.
.KAZ

F-Man World!

[Python] 파이썬 엑셀 다루기(Feat. OpenPyXL)
Python/Basic

[Python] 파이썬 엑셀 다루기(Feat. OpenPyXL)

2022. 11. 28. 21:46
반응형

1. OpenPyXL 설치

  • 아래 코드 블록을 터미널에 입력하여 모듈 설치
pip3 install openpyxl

📌 OpenPyXL 더보기

더보기
모듈: OpenPyXL매뉴얼: https://openpyxl.readthedocs.org/

내용

 - 엑셀 프로그램이 설치되어 있지 않아도 엑셀파일 생성과 읽기 가능

 - 대용량 지원, 이미지 지원 등 가능

 - Workbook 은 엑셀 파일을 의미합니다.

 - Worksheet 는 파일 내 시트를 의미합니다.(현재 사용중인 시트는 액티브 시트)

 - Cell 은 시트 내 셀을 의미합니다.

 

2. Workbook & Worksheet

# Part 1. 모듈 가져오기
import openpyxl

# Part 2. 워크북 불러오기
wb = openpyxl.load_workbook('example.xlsx')	# [.py], [.xlsx] 파일은 같은 폴더에
wb.get_sheet_names() # 현재 워크북 내 시트를 리스트 형태로 반환 
# >>> ['Sheet1', 'Sheet2', 'Sheet3']


# Part 3. 워크시트 불러오기
sheet = wb.get_sheet_by_name('Sheet1') #이름으로
sheet = wb.active # 현재 활성화된 것으로

 

3. Cell

# Part 1. 모듈 가져오기
import openpyxl

# Part 2. 워크북
wb = openpyxl.load_workbook('example.xlsx')

# Part 3. 워크시트
sheet = wb.get_sheet_by_name('Sheet1') #시트 이름

#==========================================================================


# Part 4. 셀 불러오기 1
	# <A1=안녕하세요.>
sheet = wb.get_sheet_by_name('Sheet1')
cell = sheet['A1']
cell.value #셀 값을 가져옴  
# >>> '안녕하세요'


# Part 4-1. 셀 불러오기 2
'Cell' + ' ' + cell.coordinate + ' ' + 'is' + ' ' + cell.value
# >>> 'Cell A1 is 안녕하세요.'

# Part 4-2. 셀 불러오기 3 (cell 함수)
sheet = wb.get_sheet_by_name('Sheet1')
sheet.cell(row=1, column=1)
# >>> <Cell Sheet1.A1>
sheet.cell(row=1, column=1).value
# >>>  '안녕하세요'
for i in range(1, 6, 2): # 1부터 5까지 2씩 증가 == 1.3.5행 뽑는 과정
    print(sheet.cell(row=i, column=1).value)
# >>> '안녕하세요'
# >>> '반갑습니다'
# >>> '어서오세요'

 

4. Cell 응용

# Part 1. 모듈 가져오기
import openpyxl

# Part 2. 워크북
wb = openpyxl.load_workbook('example.xlsx')

# Part 3. 워크시트
sheet = wb.get_sheet_by_name('Sheet1') #시트 이름

# Part 4. 셀 불러오기 1 
sheet = wb.get_sheet_by_name('Sheet1')
cell = sheet['A1']
cell.value

# Part 4-1. 셀 불러오기 2
'Cell' + ' ' + cell.coordinate + ' ' + 'is' + ' ' + cell.value

# Part 4-2. 셀 불러오기 3 (cell 함수)
sheet = wb.get_sheet_by_name('Sheet1')
sheet.cell(row=1, column=1)
sheet.cell(row=1, column=1).value
for i in range(1, 6, 2): # 1부터 5까지 2씩 증가 == 1.3.5행 뽑는 과정
    print(sheet.cell(row=i, column=1).value)

#==========================================================================

# Part 5. 셀 범위 불러오기 1
cell_range = sheet['A1:C2']
colC = sheet['C']
col_range = sheet['C:D']
row10 = sheet[10]
row_range = sheet[5:10]

# Part 5-1. 셀 범위 불러오기 2 (전체 로우 & 컬럼에 접근하는 코드)

for col_cell in colC:
	print(col_cell.value)
    
for col in col_range:
    for cell in col
        print(cell.value)
    print('')
    
for col_cell in colC:
	print(col_cell.value)

for row in row_range:
    for cell in row:
        print(cell.vlaue)
    print('')
    
    
# Part 6. 셀에 값 쓰기

sheet['A1']		# A1 셀 값 접근
sheet['A1'] = '안녕하세요'	# A1 셀에 값 쓰기
sheet['B2'] = '=SUM(B3:B5)'	#B2 셀에 함수 쓰기

 

5. Workbook 생성 및 저장

# Part 7. 엑셀 문서 만들고 저장하기

from openpyxl import Workbook
wb = Workbook()
wb.sheetnames

sheet = wb.active
sheet.title

sheet.title = '엑셀 만들기'
sheet.title

wb.create_sheet('sheet2') 	# 마지막에 시트 추가
wb.create_sheet('sheet3', 0) 	# 해당 위치 시트 추가 __ 0부터 시작

wb.save('MakeExcel.xlsx')	#워크북 저장

 

 

📌OpenPyXL 심화

def find_parks_not_in_us():
	wb= openpyxl.load_workbook('example.xlsx')
    
    sheet = wb.get_sheet_by_name('sheet1')
    
    parklist = []	#결과를 저장할 리스트
    
    for row in sheet[2:sheet..max_row]:		#파일 읽을 범위 설정
    	if row[5].value != 'US':		#로우 순회하며 US아닌 로우 리스트로 만들기
        	parklist.append(row)
	#row[5]은 6번 열을 의미

    wb.close()
    return parklist



def make_file(parklist):
	with open('parklist.txt','w', encoding='UTF-8') as file:
    	for item in parklist:
        	park_str = make_parkstr(item)
            file.write(park_str + '\n')



def make_parkstr(t):
	result_str = ''
    
    for item in t:
    	result_str += str(item.value) + '\t'
        
        return resul_str
        
        
def main():
	parklist = find_parks_not_in_us()
    make_file(parklist)
    print('parklist.txt 파일이 생성되었습니다.)
    
if __name__ '__main__':
	main()

 

반응형

'Python > Basic' 카테고리의 다른 글

[Python] 변수와 자료형(숫자형, 문자열, 리스트, 딕셔너리, bool)  (0) 2023.09.13
[Python] 파이썬 Homebrew 설치(for. Mac)  (0) 2022.10.05
[Python] 파이썬 개발환경 구축(for. Mac)  (1) 2022.10.05
.KAZ
.KAZ
👾사회초년생의 고군분투기

티스토리툴바