반응형
소개
xlwings를 사용하다 보면 'TypeError: unhashable type: 'dict''라는 오류가 발생할 수 있습니다. 이 오류는 주로 딕셔너리를 키로 사용하려 할 때 발생하게 됩니다. 딕셔너리의 특성상 해시 가능한 타입이 아니기 때문에 다음과 같은 에러가 발생합니다. 이 글에서는 이 오류의 원인과 그 해결 방법에 대해 알아보겠습니다.
에러 발생 예시 코드
먼저, 'TypeError: unhashable type: 'dict'' 에러가 발생할 수 있는 간단한 예시 코드를 살펴보겠습니다.
import xlwings as xw
# 엑셀 애플리케이션 열기
app = xw.App(visible=True)
# 새로운 엑셀 워크북 생성
workbook = app.books.add()
# 시트에 딕셔너리 데이터 추가
data = {
'A1': 'Hello',
'B1': 'World'
}
# TypeError 발생: dict가 해시 불가능합니다
workbook.sheets[0].range('A1').value = data
에러 해결 방법
1. 딕셔너리를 변환하여 사용하라
엑셀의 셀에 값을 할당할 때, 직접적인 딕셔너리 객체를 사용하는 대신 딕셔너리의 값을 리스트 형태 또는 별도의 두 개의 리스트로 변환하여 입력하는 것이 좋습니다.
import xlwings as xw
# 엑셀 애플리케이션 열기
app = xw.App(visible=True)
# 새로운 엑셀 워크북 생성
workbook = app.books.add()
# 딕셔너리 데이터를 리스트로 변환
data = {
'A1': 'Hello',
'B1': 'World'
}
# 리스트의 형식으로 값 입력
workbook.sheets[0].range('A1').value = list(data.values())
2. 셀 범위를 지정하여 여러 값 한 번에 입력하기
또는 딕셔너리의 키와 값을 이중 리스트 형태로 변환하여 셀 범위에 입력할 수도 있습니다. 이렇게 하면 엑셀에 여러 값을 한 번에 입력할 수 있습니다.
import xlwings as xw
# 엑셀 애플리케이션 열기
app = xw.App(visible=True)
# 새로운 엑셀 워크북 생성
workbook = app.books.add()
# 딕셔너리 데이터를 이중 리스트로 변환
data = {
'A1': 'Hello',
'B1': 'World'
}
# 데이터의 키와 값을 이중 리스트 형태로 변환하여 입력
workbook.sheets[0].range('A1').value = [[key, value] for key, value in data.items()]
마무리
이 글에서는 xlwings 사용 시 발생할 수 있는 'TypeError: unhashable type: 'dict'' 오류와 그 해결 방법을 살펴보았습니다. 딕셔너리를 직접적으로 엑셀의 셀에 입력하는 대신, 리스트 형태로 변환하여 사용하는 방법으로 이러한 오류를 해결할 수 있습니다. 항상 코딩하면서 에러를 겪게 되면 실망할 수 있지만, 그 경험을 통해 더욱 성장할 수 있습니다. 고민할 시간보다 해결할 방법을 찾아보는 것이 중요합니다!
반응형
'Python > xlwings' 카테고리의 다른 글
xlwings ImportError: DLL load failed while importing xw 오류 해결하기 (1) | 2024.12.20 |
---|---|
xlwings KeyError: 'target_range' 오류 해결하기 (0) | 2024.12.20 |
xlwings AttributeError: 'Workbook' object has no attribute 'rows' 오류 해결하기 (0) | 2024.12.20 |
xlwings RuntimeError: This session is not started 오류 해결하기 (0) | 2024.12.20 |
파이썬 xlwings.get_row 함수 활용하기 (0) | 2024.12.20 |