728x90
반응형
개요
이번 글에서는 엑셀 파일을 열어서 특정 영역의 자료들를 수정하는 방법을 알아보겠습니다.
기초적인 내용은 앞 글을 참고하시기 바랍니다.
- "새로운 엑셀파일을 만들고 데이터 입력하기":https://hbesthee.tistory.com/2242
- "엑셀 파일을 열고, 배열 데이터 입력하기":https://hbesthee.tistory.com/2243
특정 영역에 대한 자료 입력 방법
아래 코드는 (B2 = 2, 2) ~ (C4 = 4, 3) 특정 영역의 데이터를 주어진 데이터로 수정하는 예제입니다.
import openpyxl
# 엑셀 파일 열기
workbook = openpyxl.load_workbook('example.xlsx')
# 이전에 만든 시트 선택
sheet = workbook['create1']
# 수정할 2차원 배열
data = [[35, '여성'],
[41, '여성'],
[51, '여성']]
# 수정할 데이터 개수
row_count, col_count = len(data), 0
if (row_count > 0):
col_count = len(data[0])
# 시트에서 수정할 구역 (1부터 시작함)
row_no, col_no = 2, 2
# 특정 영역 데이터 수정
for row_index, row in enumerate(sheet.iter_rows(min_row = row_no, max_row = row_no + row_count - 1
, min_col = col_no, max_col = col_no + col_count - 1, values_only = True)):
for col_index, value in enumerate(row):
row_value = data[row_index][col_index]
sheet.cell(row = row_no + row_index, column = col_no + col_index, value = row_value)
# sheet.cell(row = row_no + row_index, column = col_no + col_index).value = row_value
# 최초 활성시트 변경
workbook.active = sheet
# 엑셀 파일 저장
workbook.save('example.xlsx')
가장 중요한 함수가 "sheet.iter_rows()" 함수입니다. 이 함수를 통하여, 특정 영역 내의 셀들을 접근할 수 있습니다.
iter_rows(min_row=None, max_row=None, min_col=None, max_col=None, values_only=False)
row (행 : 1, 2, ...) 및 col (열 : A, B, ...) 좌표는 1부터 시작되는 좌표입니다. 엑셀에서 열 좌표는 "A", "B", ... 인데, "A = 1", "B = 2", ... 식으로 입력하면 됩니다.
즉, "sheet.iter_rows()" 함수에 특정한 사각형 영역에 대한 좌표를 입력할 때, 좌측 상단 좌표를 min에 입력하고, 우측 하단의 좌표를 max에 입력하게 됩니다.
위 예제를 실행하면 다음과 같이 왼쪽에 보이는 데이터가 오른쪽과 같이 변경됩니다.
참고자료
- "openpyxl - openpyxl.worksheet.worksheet.Worksheet.iter_rows":https://openpyxl.readthedocs.io/en/stable/api/openpyxl.worksheet.worksheet.html?highlight=iter_rows#openpyxl.worksheet.worksheet.Worksheet.iter_rows
- "엑셀 파일을 열고, 배열 데이터 입력하기":https://hbesthee.tistory.com/2243
- "새로운 엑셀파일을 만들고 데이터 입력하기":https://hbesthee.tistory.com/2242
'프로그래밍 > Python' 카테고리의 다른 글
[Python] pytube로 영상 다운로드 시, 발생하는 'NoneType' object has no attribute 'span' 오류 (0) | 2023.01.26 |
---|---|
[Python] 라즈베리파이 GPIO 제어하기 - 기초 (0) | 2023.01.23 |
[Python] 엑셀 파일을 열고, 배열 데이터 입력하기 (0) | 2023.01.17 |
[Python] 새로운 엑셀파일을 만들고 데이터 입력하기 (0) | 2023.01.16 |
[Python] libf77blas.so.3: cannot open shared object file (0) | 2022.10.23 |