본문 바로가기

코딩/업무자동화

[파이썬/업무자동화] openpyxl 시트 조작 방법 4가지

반응형

 

※ OpenPyxl 관련 포스팅 모음

2021.03.19 - [코딩/업무자동화] - [파이썬/업무자동화] Openpyxl로 엑셀 함수 사용하기, 엑셀 수식 넣기

2021.08.21 - [코딩/업무자동화] - [파이썬/업무자동화] Openpyxl 통해 엑셀 함수 사용하기 2편

2021.08.30 - [코딩/업무자동화] - [파이썬/업무자동화] 엑셀에 입력 된 파일명 따라 이미지 삽입하기 - openpyxl

2021.10.04 - [코딩/업무자동화] - [파이썬/업무자동화] openpyxl.style 사용법 정리

2021.10.16 - [코딩/업무자동화] - [파이썬/업무자동화] openypyxl 통해 엑셀 조건부 서식 적용하기


 

1. 시트 생성하기

 

 : create sheet 사용시 파라미터에 따라 시트 위치도 조정 가능함

 

기본적으로 시트를 생성하는 방법은 create_sheet 함수를 사용. 괄호 안의 내용은 시트명.

 

<코드>

#workbook 객체 생성
wb = op.Workbook()

#시트 생성하기(create sheet)
ws = wb.create_sheet("연습")
print(wb.sheetnames)

 

<결과>

['Sheet', '연습']

 

만약, 시트의 위치를 지정하고 싶다면 아래와 같이 숫자 파라미터 입력한다. 숫자 0을 기준으로 시트 생성 

 

<코드>

#첫번째 위치에 생성
ws = wb.create_sheet("첫번째", 0)
print("첫번째 : ", wb.sheetnames)

#마지막에서 두번재 위치에 생성
ws = wb.create_sheet("뒤에서 두번째",-1)
print("뒤에서 두번째 : ", wb.sheetnames)

#두번째 위치에 생성
ws = wb.create_sheet("두번째",1)
print("두번째 : ", wb.sheetnames)

#세번째 위치에 생성
ws = wb.create_sheet('세번째',2)
print("세번째 : ", wb.sheetnames)

 

<결과>

첫번째 :  ['첫번째', 'Sheet', '연습']
뒤에서 두번째 :  ['첫번째', 'Sheet', '뒤에서 두번째', '연습']
두번째 :  ['첫번째', '두번째', 'Sheet', '뒤에서 두번째', '연습']
세번째 :  ['첫번째', '두번째', '세번째', 'Sheet', '뒤에서 두번째', '연습']

 

 

2. 시트 이름 변경하기

 

1에서 다뤘던 시트명을 기준으로 변경. 시트명을 변경할 때는 title이라는 속성값을 사용

 

 

<코드>

#'첫번째'라는 이름을 가진 시트를 'First'로 변경
ws1 = wb["첫번째"]
ws1.title = "First"
print(wb.sheetnames)

#'두번째'라는 이름을 가진 시트를 'Second'로 변경
ws2 = wb["두번째"]
ws2.title = "Second"
print(wb.sheetnames)

 

<결과>

['First', '두번째', '세번째', 'Sheet', '뒤에서 두번째', '연습']
['First', 'Second', '세번째', 'Sheet', '뒤에서 두번째', '연습']

 

 

3. 워크시트 이동, 복사

 

  워크시트 이동과 복사는 move_sheet와 copy_worksheet라는 함수를 사용한다. 해당 함수를 사용해보니 다른 엑셀파일간의 이동,복사는 안되는 것으로 보인다.

 

 

1) 복사

 

<코드>

#'Second' 시트를 복사하기
sht = wb["Second"]
ws_copy = wb.copy_worksheet(sht)
print("복사한 시트명 : ", ws_copy)
print("시트리스트 : ", wb.sheetnames)

 

<결과>

복사한 시트명 :  <Worksheet "Second Copy">
시트리스트 :  ['First', 'Second', '세번째', 'Sheet', '뒤에서 두번째', '연습', 'Second Copy']

 

 

2) 이동

 

  현재 있는 시트 위치 기준으로 offset 값을 줘 이동. move_sheet(ws_copy, -5)에서 -5가 offset이다. 결과를 보면 시트가 앞으로 5칸 이동함.

 

<코드>

#복사한 Second sheet를 기준점에서 앞으로 5칸 이동
print("원본 : ", wb.sheetnames)
wb.move_sheet(ws_copy, -5) 
print("이동 후 : " , wb.sheetnames)

 

<결과>

원본 :  ['First', 'Second', '세번째', 'Sheet', '뒤에서 두번째', '연습', 'Second Copy']
이동 후 :  ['First', 'Second Copy', 'Second', '세번째', 'Sheet', '뒤에서 두번째', '연습']

 

 

4. 시트 속성 설정(시트 탭 색깔)

 

시트 탭의 색을 변경 가능

 

<코드>

#변경전 시트 확인
wb.save("./Project/15. openpyxl 시트 조작 관련/before.xlsx")

#시트 탭 색깔 변경(하늘색)
ws_copy.sheet_properties.tabColor = '00FFFF'

#다시 저장하여 확인
wb.save("./Project/15. openpyxl 시트 조작 관련/after.xlsx")

 

<결과>

 

변경전
시트 탭 색깔 변경 후

728x90