본문 바로가기
Python/xlwings

xlwings TypeError: 'int' object is not subscriptable 오류 해결하기

by PySun 2024. 12. 21.
반응형

소개

xlwings를 사용할 때 'TypeError: 'int' object is not subscriptable' 오류가 발생하는 경우가 있습니다. 이 오류는 대개 정수형 객체에 대해 인덱싱을 시도할 때 발생합니다. 어떤 경우에 이 오류가 발생하는지, 그리고 어떻게 해결할 수 있는지에 대해 알아보겠습니다.

에러 발생 예시 코드

다음은 이 오류가 발생할 수 있는 간단한 예제 코드입니다.

import xlwings as xw

# 엑셀 애플리케이션 시작
app = xw.App(visible=True)

# 새로운 워크북 생성
wb = app.books.add()

# 특정 셀의 값 설정
wb.sheets[0].range('A1').value = 10

# 잘못된 접근 - 정수형 객체에 대한 인덱싱
cell_value = wb.sheets[0].range('A1').value[0]
print(cell_value)

에러 해결 방법

1. 값을 올바르게 가져오기

먼저, 'A1' 셀의 값이 정수형이므로 인덱싱을 해서 접근할 수 없습니다. 대신, 값 자체를 출력하거나 필요한 경우 변환해 보세요.

import xlwings as xw

# 엑셀 애플리케이션 시작
app = xw.App(visible=True)

# 새로운 워크북 생성
wb = app.books.add()

# 특정 셀의 값 설정
wb.sheets[0].range('A1').value = 10

# 올바른 접근 - 단순히 값을 가져오기
cell_value = wb.sheets[0].range('A1').value
print(cell_value)

2. 리스트 또는 문자열에서 접근하기

만약 리스트나 문자열에 대한 인덱싱을 하려는 것이었다면, 해당 객체가 올바르게 정의돼 있어야 합니다. 예를 들어, 인덱싱을 하려는 변수가 리스트인지 확인해 보세요.

import xlwings as xw

# 엑셀 애플리케이션 시작
app = xw.App(visible=True)

# 새로운 워크북 생성
wb = app.books.add()

# 리스트를 사용하여 셀 값 설정
wb.sheets[0].range('A1').value = [10, 20, 30]

# 리스트에서 특정 요소 접근
cell_value = wb.sheets[0].range('A1').value[0]
print(cell_value)

마무리

이 블로그 글에서는 xlwings에서 발생하는 'TypeError: 'int' object is not subscriptable' 오류에 대해 설명하고, 이 문제를 해결하는 몇 가지 방법을 소개했습니다. 올바른 데이터 유형을 사용하고 인덱싱할 수 있는 객체에 대해서만 접근하는 것이 중요합니다. 항상 코드를 작성할 때는 데이터의 유형을 체크하고, 오류 발생 가능성을 줄이는 방식으로 접근해야 합니다. 감정적인 디버깅 과정을 통해 코딩에 대한 두려움을 느끼지 말고, 즐겁게 프로그래밍해 보세요!

반응형