Python으로 openpyxl을 이용해서 엑셀 파일을 제작하다보면 첫 행이나 첫 열을 고정해야 하는 경우가 생깁니다. openpyxl 행 고정하기 및 열 고정하기 방법을 함께 살펴보겠습니다.
목차
openpyxl 행 고정하기, 열 고정하기 방법
sheet의 프로퍼티로 freeze_panes라는 값이 있습니다. 이 값에 원하는 셀 주소를 넣어주면 해당 셀 이전까지 고정됩니다.
openpyxl 열 고정하기
다음의 경우는 A열을 고정한 결과입니다.
위와 같은 결과를 만들기 위한 코드를 살펴보겠습니다.
from openpyxl import Workbook
workbook = Workbook()
sheet = workbook.active
sheet['A1'].value = "회사명"
sheet['A2'].value = "전화번호"
sheet['A3'].value = "주소"
sheet['A4'].value = "우편번호"
sheet['B1'].value = "놀라자빠질라"
sheet['B2'].value = "02-000-0000"
sheet['B3'].value = "서울시 한강구 한강동 15-3"
sheet['B4'].value = "12345"
sheet.freeze_panes = 'B1'
workbook.save("freeze_panes.xlsx")
Python16라인을 보면 ‘B1’이라는 값을 사용했습니다. B열 이전, 그리고 1행 이전까지 고정하는 pane을 두겠다는 의미입니다. B열 이전은 A열을 의미하는 것이고, 1행 이전은 없습니다. 그래서 A열과 B열 사이에 pane이 생기면서 A열이 고정된 것을 확인할 수 있습니다.
openpyxl 행 고정하기
아래 그림은 1행만 고정한 결과입니다.
마찬가지로 코드를 살펴보겠습니다. 나머지 코드는 모두 동일하기 때문에 freeze_panes 프로퍼티를 설정한 부분만 살펴보겠습니다.
sheet.freeze_panes = 'A2'
Python이번에는 ‘A2’라는 값을 이용했습니다. A열의 이전이니까 없습니다. 2행 이전이니까 1행을 의미하는 것입니다. 그래서 1행과 2행 사이에 pane이 생기면서 1행이 고정되었습니다.
openpyxl 행열 모두 고정하기
이번에는 A열과 1행을 모두 고정한 결과입니다. 어떻게 하면 될까요? 위에서 살펴본 내용을 고려하면 맞출 수 있습니다.
정답은 ‘B2’입니다. B열의 이전이니까 A열, 그리고 2행의 이전이니까 1행이 됩니다. 그래서 A열과 1행이 고정되는 것이죠.
sheet.freeze_panes = 'B2'
Pythonopenpyxl 여러 행 고정하기
이번에는 1행과 2행까지 고정하기를 원하는 경우입니다.
네, 맞습니다. ‘A3’이 정답입니다. A열 이전은 없고, 3행 이전은 1행과 2행입니다. 따라서 1행과 2행이 고정되고, 2행과 3행 사이에 pane이 생긴 것을 확인할 수 있습니다.
sheet.freeze_panes = 'A3'
Python관련 자료
openpyxl의 worksheet 모듈 페이지를 참고했습니다.