본문 바로가기
Python/xlwings

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

by PySun 2024. 11. 23.
반응형

소개

xlwings를 사용하다 보면 때때로 'TypeError: 'dict' object is not subscriptable'라는 에러 메시지를 마주할 수 있습니다. 이 오류는 일반적으로 딕셔너리 타입의 객체를 리스트처럼 접근하려고 할 때 발생합니다. 이번 블로그 글에서는 이 오류의 원인과 실질적인 해결책을 제시하겠습니다.

에러 발생 예시 코드

아래는 이 오류가 발생할 수 있는 간단한 예시 코드입니다. 딕셔너리의 값을 접근할 때 잘못된 방법을 사용하고 있습니다.

import xlwings as xw

# 새로운 엑셀 앱 생성
app = xw.App(visible=True)

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

# 시트에 데이터 입력
wb.sheets[0].range('A1').value = {'name': 'Alice', 'age': 30}

# 딕셔너리에서 값을 리스트처럼 접근
name = wb.sheets[0].range('A1').value[0]
print(name)

에러 해결 방법

이 오류를 해결하기 위해서는 딕셔너리의 올바른 접근 방법을 사용하는 것이 중요합니다. 아래 방법으로 오류를 수정할 수 있습니다.

1. 딕셔너리의 키 사용하기

딕셔너리는 키 값을 사용하여 접근할 수 있습니다. 'name' 키를 사용하여 값을 올바르게 가져올 수 있습니다.

import xlwings as xw

# 새로운 엑셀 앱 생성
app = xw.App(visible=True)

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

# 시트에 데이터 입력
wb.sheets[0].range('A1').value = {'name': 'Alice', 'age': 30}

# 딕셔너리에 올바르게 접근
data = wb.sheets[0].range('A1').value
name = data['name']  # 딕셔너리 키 사용
print(name)

2. 배열이나 리스트로 데이터 입력

만약 리스트처럼 접근해야 한다면, 데이터 입력 방식을 아예 리스트나 배열로 변경하는 것도 좋은 방법입니다.

import xlwings as xw

# 새로운 엑셀 앱 생성
app = xw.App(visible=True)

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

# 리스트를 사용하여 데이터 입력
data = [['name', 'age'], ['Alice', 30]]
wb.sheets[0].range('A1').value = data

# 리스트에서 값 접근하기
name = wb.sheets[0].range('A2').value  # 리스트의 첫번째 값 가져오기
print(name)

마무리

이번 글에서는 xlwings 사용 중 나타날 수 있는 'TypeError: 'dict' object is not subscriptable' 에러에 대해 알아보았습니다. 딕셔너리의 키를 사용하거나 데이터 입력 방식을 변경함으로써 문제를 해결할 수 있음을 확인하였습니다. 항상 코드의 오류를 확인하고, 데이터 구조를 잘 이해하며 작업할 때 더욱 효과적인 자동화를 경험할 수 있습니다.

반응형