본문 바로가기
Python/xlwings

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

by PySun 2024. 12. 9.
반응형

소개

xlwings를 사용하다 보면 'TypeError: 'tuple' object is not subscriptable'이라는 에러를 만날 수 있습니다. 이 오류는 일반적으로 기대하는 데이터 타입과 다른 형태의 데이터를 사용할 때 발생합니다. 이 블로그 글에서는 이 오류가 발생하는 경우와 해결 방법에 대해 알아보겠습니다.

에러 발생 예시 코드

먼저, 'TypeError: 'tuple' object is not subscriptable' 에러가 발생할 수 있는 간단한 예시 코드를 살펴봅시다.

import xlwings as xw

# 새로운 Excel 애플리케이션 생성
app = xw.App(visible=True)

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

# 특정 셀에 값 입력
workbook.sheets['Sheet1'].range('A1').value = 'Hello, World!'

# 잘못된 방법으로 시트 형식으로 접근 시도
sheet_data = workbook.sheets['Sheet1'].cells.value
print(sheet_data[0][0])  # TypeError 발생

에러 해결 방법

1. 올바른 데이터 타입 사용하기

위의 예시에서 'sheet_data'는 튜플 형태로 반환됩니다. 각 튜플에 접근하려고 하는 경우, 잘못된 인덱스를 사용하고 있는 경우입니다. 이를 해결하기 위해 '.value' 속성을 적절히 사용해야 합니다.

import xlwings as xw

# 새로운 Excel 애플리케이션 생성
app = xw.App(visible=True)

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

# 특정 셀에 값 입력
workbook.sheets['Sheet1'].range('A1').value = 'Hello, World!'

# 올바른 접근 방법으로 시트의 셀 값 가져오기
sheet_data = workbook.sheets['Sheet1'].range('A1').value
print(sheet_data)  # Hello, World! 출력

2. 셀 범위지정 시 tuple로 반환 여부 확인

일부 Excel 셀 방법에서는 반환값이 튜플일 수 있습니다. 명확하게 데이터를 가져오는 방법을 사용해야 합니다.

import xlwings as xw

# 새로운 Excel 애플리케이션 생성
app = xw.App(visible=True)

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

# 여러 셀에 값 입력
workbook.sheets['Sheet1'].range('A1:B2').value = [('Hello', 'World'), ('Goodbye', 'World')]

# 올바른 접근 방법으로 셀 값 가져오기
sheet_data = workbook.sheets['Sheet1'].range('A1:B2').value
for row in sheet_data:
    for value in row:
        print(value)  # Hello, World, Goodbye, World 출력

마무리

이 블로그 글에서는 xlwings에서 발생하는 'TypeError: 'tuple' object is not subscriptable' 에러에 대한 몇 가지 해결 방법을 살펴보았습니다. 정확한 데이터 접근 방식을 사용하고, 반환되는 데이터의 타입을 항상 주의 깊게 확인하는 것이 중요합니다. 이렇게 하면 xlwings와 함께 작업할 때 발생할 수 있는 오류를 최소화할 수 있습니다.

반응형