Python/xlwings

xlwings 타입 오류: 'float' 객체는 반복(iterable)할 수 없습니다 해결하기

PySun 2024. 11. 21. 21:51
반응형

소개

xlwings를 사용하면서 'TypeError: 'float' object is not iterable' 에러가 발생할 때가 있습니다. 이 오류는 주로 반복(iterable) 가능한 객체를 요구하는 함수나 메서드에 float 변수를 전달할 때 발생합니다. 이번 블로그 글에서는 이 오류가 발생하는 원인과 그 해결 방법에 대해 살펴보겠습니다.

에러 발생 예시 코드

먼저, 'TypeError: 'float' object is not iterable' 에러가 발생할 만한 간단한 예시 코드를 살펴보겠습니다.

import xlwings as xw

# Excel 애플리케이션 열기
wb = xw.Book()

# 숫자를 반복(iterable)하려고 시도
numbers = 3.14  # float 타입 변수

# 'for' 루프에서 시도하게 되면 오류 발생
for num in numbers:
    print(num)

에러 해결 방법

1. 잘못된 데이터 타입 확인

먼저 float 변수를 iterable한 형태로 바꿔주어야 합니다. 예를 들어, 리스트나 튜플로 감싸주는 것입니다.

import xlwings as xw

# Excel 애플리케이션 열기
wb = xw.Book()

# 리스트로 변환하여 반복 가능하도록 변경
numbers = [3.14]  # 이제 리스트로 변경됨

# 'for' 루프 사용 가능
for num in numbers:
    print(num)

2. Excel 셀의 값을 가져올 때 형 변환

엑셀에서 값을 가져올 때도 float이나 다른 데이터 타입이 잘못 전달될 수 있습니다. 이 때는 값을 적절한 형태로 변환해야 합니다.

import xlwings as xw

# Excel 애플리케이션 열기
wb = xw.Book()

# A1 셀에서 값을 가져옵니다.
value = wb.sheets[0].range('A1').value

# 값이 float인지 확인하고 리스트로 변환
if isinstance(value, float):
    values = [value]  # float 변수를 리스트로 감싸기
else:
    values = value  # 이미 iterable한 경우 그대로 사용

for num in values:
    print(num)

마무리

이번 블로그 글에서는 xlwings에서 발생할 수 있는 'TypeError: 'float' object is not iterable' 에러의 원인과 해결 방법에 대해 살펴보았습니다. 변수를 iterable한 형태로 변환하거나, 엑셀에서 가져오는 값을 적절히 처리하여 이러한 오류를 방지할 수 있습니다. 항상 데이터 타입을 확인하고 적절하게 사용하시길 바랍니다!

반응형