본문 바로가기
파이썬/데이터 다루기

[240911] 파이썬 #10 - 엑셀 파일 다루기

by 황오독 2024. 9. 11.

1. 엑셀 파일 열기

# 라이브러리 불러오기
import openpyxl as xl # openpyxl 라이브러리를 xl 별칭으로 줌.

# 워크북 오브젝트를 선언(엑셀 파일 열기) - load_workbook
wb = xl.load_workbook('Fruit.xlsx')

# 시트 이름 확인
wb.sheetnames

# 출력 결과
['Sheet1', 'Sheet2']

 

2. 엑셀 파일 읽기 - 기존 들고 있던 Fruit.xlsx 파일 사용

실제 사용하였던 엑셀파일

 

# 시트 선택
sheet1 = wb['Sheet1']

# 셀 이름으로 셀 값 확인
sheet1['A1'].value

# 결과 출력
'Apple'

# 행과 열 번호로 셀 값 확인
sheet1.cell(row=1, column=1).value

# 결과 출력
'Apple'

# 데이터 영역 확인
print(sheet1.min_row, sheet1.max_row)        # 시작 행, 끝 행
print(sheet1.min_column, sheet1.max_column)  # 시작 열, 끝 열

# 결과 출력
1 4 # 1~4행
1 2 # 1~2열

 

# 연습 문제
# 해당 엑셀파일에 Banana를 읽어 보세요.

# Banana 읽기
print(sheet1['A2'].value)

# 또는
print(sheet1.cell(2,1).value) # value를 생략해도 됨.
						      # row=2, column=1 과 같은 의미임.
                              
                              
# 반복문을 사용해 과일 이름 하나씩 출력하기
# 과일 이름 출력 1
for x in range(sheet1.min_row, sheet1.max_row + 1): # 1, 5
	print(sheet1.cell(x,1).value)
    
# 출력 결과
Apple
Banana
Melon
Orange

# 과일 이름 출력 2
fruit = []
for x in range(1, 5):
	fruite.append(sheet1[f'A{x}'].value # append와 A{x} 사용에 대해서 좋은 방법이라고 생각했음.
    
print(fruite)

# 출력 결과
['Apple', 'Banana', 'Melon', 'Orange']

 

3. 엑셀 파일 쓰기

 1) 셀 값 수정하기

   - 해당 셀 값에 새로운 값을 할당하는 방법으로

     -  sheet1['A1'].value = 'Pineapple'

   => 바꾸고 반드시 저장해야함

   => wb.save('Fruit.xlsx')

 

  2) 행/열 추가와 삭제

    - sheet.insert_rows(행번호) : 행 삽입

    - sheet.insert_cols(열번호) : 열 삽입

    - sheet.delete_rows(행번호) : 행 삭제

    - sheet.delete_cols(열번호) : 열 삭제

실제 사용했던 엑셀 파일

# 행 추가
sheet1.insert_rows(2)

# 셀 값 확인
print(sheet1.cell(1, 1).value, sheet1.cell(1, 2).value)
print(sheet1.cell(2, 1).value, sheet1.cell(2, 2).value)
print(sheet1.cell(3, 1).value, sheet1.cell(3, 2).value)

# 저장
# wb.save('Animal.xlsx')

# 출력 결과
Lion Mammals
None None  # 새로 추가된 2행
Elephant Mammals

 

# 행 삭제
sheet1.delete_rows(2)

# 셀 값 확인
print(sheet1.cell(1, 1).value, sheet1.cell(1, 2).value)
print(sheet1.cell(2, 1).value, sheet1.cell(2, 2).value)
print(sheet1.cell(3, 1).value, sheet1.cell(3, 2).value)

# 저장
wb.save('Animal.xlsx')

# 출력 결과
Lion Mammals
Fox Mammals # 다시 앞으로 땡겨져 오는 것을 확인
Leopard Mammals

 

delete는 내용만 삭제하는 것이 아니라, 행 자체를 삭제하는 것!