반응형
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 |