<내용정리>
- 관련 파일
- 본문
### 엑셀 파일 생성 및 저장하기
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
ws.title = '시트1'
ws.append(['이름', '나이', '성별'])
ws.append(['이순신', '55', '남자'])
wb.save(filename='./openpyxl/테스트.xlsx')
### 엑셀 파일 불러와 내용 수정 후 저장하기
from openpyxl import load_workbook
wb = load_workbook(filename='./openpyxl/테스트.xlsx') # 파일 열기
ws = wb.active # 시트 활성화
ws.append(['홍길동', '40', '남자']) # 행 추가
wb.save(filename='./openpyxl/테스트.xlsx') # 저장
### 시트 복사하기
from openpyxl import load_workbook
wb = load_workbook(filename='./openpyxl/테스트.xlsx')
wb.copy_worksheet(wb['시트1'])
wb.active = wb['시트1 Copy']
wb.save(filename='./openpyxl/샘플_시트 복사.xlsx')
### 시트 이름 바꾸기
from openpyxl import load_workbook
wb = load_workbook(filename='./openpyxl/샘플_시트 복사.xlsx')
print(wb.sheetnames)
wb['시트1 Copy'].title = '시트1 복사'
wb.save(filename='./openpyxl/샘플_시트 복사.xlsx')
print(wb.sheetnames)
### 셀의 내용 확인하기
from openpyxl import load_workbook
wb = load_workbook(filename='./openpyxl/테스트.xlsx')
ws = wb['시트1']
print(ws['A1'].value)
print(ws[1][0].value)
### 반복문을 통해 셀 정보에 접근하기
for row in ws:
print(row)
print()
for row in ws:
for cell in row:
print(f'셀 객체명 : {cell}, 셀 값 : {cell.value}')
### 셀의 내용 수정하기
from openpyxl import load_workbook
wb = load_workbook(filename='./openpyxl/테스트.xlsx')
ws = wb['시트1']
ws['A1'] = '성명' # 셀의 값 수정
wb.save(filename='./openpyxl/테스트_셀 내용 변경.xlsx')
### 반복문을 통해 셀 정보에 순차적으로 접근, 값 변경하기
from openpyxl import load_workbook
wb = load_workbook(filename='./openpyxl/테스트.xlsx')
ws = wb['시트1']
new_data = ['신사임당', '45', '여자']
row_no = 1
for row in ws:
if row_no == 2:
for cell in row:
cell.value = new_data[cell.col_idx-1]
row_no += 1
wb.save(filename='./openpyxl/테스트_셀 내용변경(반복문).xlsx')
### 셀의 내용 입력하기
from openpyxl import load_workbook
wb = load_workbook(filename='./openpyxl/테스트.xlsx')
ws = wb['시트1']
ws['A4'] = '심사임당'
ws['B4'] = '45'
ws['C4'] = '여자'
ws.append(['을지문덕', '60', '남자'])
new_data_list = [['유관순', '16', '여자'], ['세종대왕', '60', '남자']]
for new_data in new_data_list:
ws.append(new_data)
wb.save(filename='./openpyxl/테스트_셀 내용 입력.xlsx')
### 행/열 삭제하기
from openpyxl import load_workbook
wb = load_workbook(filename='./openpyxl/테스트.xlsx')
ws = wb['시트1']
ws.delete_rows(idx=2, amount=1)
ws.delete_cols(idx=2, amount=2)
wb.save(filename='./openpyxl/테스트_행과 열의 삭제.xlsx')
### 셀 복사하기
from openpyxl import load_workbook
wb = load_workbook(filename='./openpyxl/테스트.xlsx')
ws = wb['시트1']
src = ws['A2'].value
ws['A5'] = src
for row in ws['A6:C6']:
for cell in row:
cell.value = src
wb.save(filename='./openpyxl/테스트_셀 복사1.xlsx')
### 여러 셀 복사하기
from openpyxl import load_workbook
wb = load_workbook(filename='./openpyxl/테스트.xlsx')
ws = wb['시트1']
src_data = []
for cell in ws[2]:
src_data.append(cell.value)
print(src_data)
for row in ws['A5:C5']:
for cell in row:
cell.value = src_data[cell.col_idx-1]
wb.save(filename='./openpyxl/테스트_셀 복사2.xlsx')
### 셀 병합 및 해제하기
from openpyxl import load_workbook
wb = load_workbook(filename='./openpyxl/테스트.xlsx')
ws = wb['시트1']
ws.merge_cells('A1:B1') # A1, B1 셀 병합
ws.merge_cells('A2:B2')
ws.unmerge_cells('A2:B2') # 셀 병합 해제
wb.save(filename='./openpyxl/테스트_셀 병합.xlsx')
### 텍스트 형식을 숫자 형식으로 바꾸고 엑셀 함수로 연산하기
from openpyxl import load_workbook
wb = load_workbook(filename='./openpyxl/테스트.xlsx')
ws = wb['시트1']
ws['B2'].data_type = 'i'
ws['B3'].data_type = 'i'
ws['A4'] = '나이 합계'
ws['B4'] = '=sum(B2:B3)'
wb.save(filename='./openpyxl/테스트_셀 연산.xlsx')
### 셀 배경과 폰트 서식 변경하기
from openpyxl import load_workbook
wb = load_workbook(filename='./openpyxl/테스트.xlsx')
ws = wb['시트1']
from openpyxl.styles import Font, PatternFill
# 배경 검은색, 글자색 흰색, 폰트 크기 12, 볼드체
fill_style = PatternFill(fill_type='solid', start_color='000000')
font_style = Font(color='FFFFFF', sz=12, bold=True)
for row in ws:
for cell in row:
if cell.row == 1:
cell.fill = fill_style
cell.font = font_style
## 셀 높이와 너비 조정하기
# 1~5행의 높이 24, 1열의 너비를 14로 변경
for i in range(1, 6):
ws.row_dimensions[i].height = 24
ws.column_dimensions['A'].width = 14
## 텍스트 정렬하기
from openpyxl.styles import Alignment
# 가로와 세로 정렬 값을 중앙으로 변경하는 객체 생성
alignment_style = Alignment(horizontal='center', vertical='center')
for row in ws:
for cell in row:
cell.alignment = alignment_style
## 셀 테두리 서식 변경하기
from openpyxl.styles import Side, Border
side_style = Side(style='medium', color='000000')
border_styles = Border(left=side_style, right=side_style, top=side_style, bottom=side_style)
for row in ws:
for cell in row:
cell.border = border_styles
wb.save(filename='./openpyxl/테스트_셀 배경과 폰트 서식 변경.xlsx')
'학부 자료 > Python' 카테고리의 다른 글
[Python] 파이썬 기초 20/20, 선택정렬 퀵정렬 이진검색 성능비교 (24) | 2023.11.08 |
---|---|
[Python] 파이썬 기초 19/20, 단순연결리스트 생성 삽입 삭제 스택 (39) | 2023.11.07 |
[Python] 파이썬 기초 17/20, 데이터의 시각화 처리 (4) | 2023.11.07 |
[Python] 파이썬 기초 16/20, 웹 크롤링의 이해 (4) | 2023.11.07 |
[Python] 파이썬 기초 15/20, 클래스 상속, 예외처리 2(강제로 예외 발생)-raise 예제 (4) | 2023.11.07 |