본문 바로가기
Python/xlwings

xlwings ValueError: invalid literal for int() with base 10 오류 해결하기

by PySun 2024. 12. 20.
반응형

소개

xlwings를 사용하다가 'ValueError: invalid literal for int() with base 10' 오류가 발생하는 경우, 이는 주로 데이터 타입의 불일치에서 기인합니다. 숫자로 변환할 수 없는 문자열을 정수형으로 변환하려 할 때 발생하는 오류입니다. 이 블로그 글에서는 이 오류를 해결하는 방법을 여러분과 공유하겠습니다.

에러 발생 예시 코드

다음은 'ValueError: invalid literal for int() with base 10' 오류가 발생할 수 있는 간단한 예시 코드입니다.

import xlwings as xw

# 새로운 엑셀 앱 열기
app = xw.App(visible=True)
wb = app.books.add()

# 셀에 문자열 저장
wb.sheets[0]['A1'].value = 'abc'

# 문자열을 정수로 변환하려 할 때 오류 발생
number = int(wb.sheets[0]['A1'].value)
print(number)

에러 해결 방법

1. 올바른 데이터 타입 확인

먼저, 셀에 저장된 데이터가 정말로 숫자인지 확인해야 합니다. 문자열이나 숫자로 변환할 수 없는 데이터가 있을 경우, 이 오류가 발생할 수 있습니다. 아래 코드는 이를 체크하는 방법입니다.

import xlwings as xw

# 새로운 엑셀 앱 열기
app = xw.App(visible=True)
wb = app.books.add()

# 셀에 문자열 저장
wb.sheets[0]['A1'].value = '123'  # 이제 올바른 숫자 문자열

# 데이터 타입 확인 후 변환
value = wb.sheets[0]['A1'].value
if value.isdigit():  # 숫자 형식인지 확인
    number = int(value)
    print(number)
else:
    print("올바른 숫자가 아닙니다.")

2. 예외 처리 사용하기

숫자로 변환할 수 없는 데이터를 만날 경우를 대비하여 예외 처리를 사용하는 것도 좋은 방법입니다. 아래 코드는 이를 반영한 예시입니다.

import xlwings as xw

# 새로운 엑셀 앱 열기
app = xw.App(visible=True)
wb = app.books.add()

# 셀에 문자열 저장
wb.sheets[0]['A1'].value = 'abc'  # 의도적으로 잘못된 값을 사용

# 예외 처리 추가
try:
    number = int(wb.sheets[0]['A1'].value)
    print(number)
except ValueError:
    print("변환할 수 없는 문자열입니다. 올바른 숫자를 입력하세요.")

마무리

이 블로그 글에서는 xlwings를 사용할 때 발생할 수 있는 'ValueError: invalid literal for int() with base 10' 오류의 발생 원인과 이를 해결하는 방법을 살펴보았습니다. 데이터 타입을 확인하고, 예외 처리를 통해 오류에 대한 대처를 수월하게 할 수 있습니다. xlwings를 활용할 때은 항상 데이터의 일관성을 확인하는 것이 중요합니다!

반응형