본문 바로가기
Python/xlwings

xlwings TypeError: Object not convertible to Excel 오류 해결하기

by PySun 2024. 12. 18.
반응형

소개

xlwings를 사용하다가 'TypeError: Object not convertible to Excel' 오류가 발생하면 당황스러울 수 있습니다. 이 에러는 보통 파이썬 객체가 Excel에서 이해하지 못하는 형식일 때 발생합니다. 이 블로그 글에서는 이 에러의 원인과 해결 방법에 대해 알아보겠습니다.

에러 발생 예시 코드

아래는 'TypeError: Object not convertible to Excel' 오류가 발생할 수 있는 간단한 예시 코드입니다.

import xlwings as xw

# 새로운 워크북 생성
wb = xw.Book()

# 비정상적인 데이터 타입 설정
data = {1: 'one', 2: 'two'}  # dictionary는 Excel로 변환할 수 없음

# 엑셀에 데이터 쓰기 시도
wb.sheets[0].range('A1').value = data

에러 해결 방법

1. 호환 가능한 데이터 타입으로 변환

Excel은 숫자, 문자열, 리스트, NumPy 배열 등 다양한 데이터 타입을 지원하지만, 딕셔너리와 같은 특정 형식은 지원하지 않습니다. 따라서 딕셔너리를 리스트 또는 다른 적절한 형식으로 변환해야 합니다.

import xlwings as xw

# 새로운 워크북 생성
wb = xw.Book()

# 호환 가능한 데이터 타입으로 변환 - 리스트로
data = [('one',), ('two',)]  # 리스트 안의 튜플 형식

# 엑셀에 데이터 쓰기
wb.sheets[0].range('A1').value = data

2. 데이터가 적절한 형식인지 확인

엑셀에 쓰기 전에 데이터가 올바른 형식임을 항상 확인하는 것이 좋습니다. 이를 위해, 데이터 타입을 체크하는 조건문을 추가할 수 있습니다.

import xlwings as xw

# 새로운 워크북 생성
wb = xw.Book()

# 데이터 준비
data = {1: 'one', 2: 'two'}

# 데이터 타입 확인 후 변환
if isinstance(data, dict):
    data = list(data.values())  # 딕셔너리의 값들을 리스트로 변환

# 엑셀에 데이터 쓰기
wb.sheets[0].range('A1').value = data

마무리

이 블로그 글에서는 'TypeError: Object not convertible to Excel' 오류에 대한 다양한 해결 방법을 살펴보았습니다. 데이터의 형식이 엑셀에서 지원되는 형식인지 확인하고, 필요한 경우 적절하게 변환함으로써 이 문제를 피할 수 있습니다. xlwings와 같은 라이브러리를 사용할 때는 항상 데이터 타입에 주의하여 작업하는 것이 중요합니다.

반응형