Python/xlwings

xlwings ValueError: Argument 1 to 'range' must be a string 오류 해결하기

PySun 2024. 11. 25. 22:51
반응형

소개

xlwings 라이브러리를 사용하다 보면 'ValueError: Argument 1 to 'range' must be a string'라는 오류가 발생할 수 있습니다. 이러한 오류는 주로 범위를 지정하는 인자를 잘못 전달했을 때 발생합니다. 이번 포스트에서는 이 문제의 원인과 해결 방법에 대해 자세히 살펴보겠습니다.

에러 발생 예시 코드

아래는 'ValueError: Argument 1 to 'range' must be a string' 오류가 발생할 수 있는 예시 코드입니다.

import xlwings as xw

# 새로운 엑셀 애플리케이션 열기
wb = xw.App(visible=True).books.add()

# 잘못된 범위 지정
rng = wb.sheets['Sheet1'].range(1, 1)  # 여기서 행과 열을 숫자형으로 전달함
print(rng)

에러 해결 방법

1. 범위를 문자열로 지정하기

xlwings에서 범위를 정의할 때는 반드시 문자열 형식으로 범위를 지정해야 합니다. 숫자를 문자열로 변경하여 오류를 해결할 수 있습니다.

import xlwings as xw

# 새로운 엑셀 애플리케이션 열기
wb = xw.App(visible=True).books.add()

# 올바른 범위 지정
rng = wb.sheets['Sheet1'].range('A1')  # 'A1' 문자열로 범위를 지정
print(rng)

2. 범위를 동적으로 생성하기

행과 열을 동적으로 사용해야 하는 경우, f-string 또는 format 메서드를 사용하여 범위를 쉽게 생성할 수 있습니다.

import xlwings as xw

# 새로운 엑셀 애플리케이션 열기
wb = xw.App(visible=True).books.add()

row = 1
col = 1
# 동적으로 범위 지정
rng = wb.sheets['Sheet1'].range(f'{chr(64 + col)}{row}')  # 'A1' 범위를 동적으로 생성
print(rng)

마무리

이 블로그 글에서는 xlwings에서 발생하는 'ValueError: Argument 1 to 'range' must be a string' 오류에 대한 해결 방법을 살펴보았습니다. 범위를 문자열 형태로 지정하거나 동적으로 생성하는 방법을 통해 이러한 오류를 극복할 수 있습니다. xlwings를 활용할 때는 항상 정확한 인수 형식에 주의하며 코딩하는 것이 중요합니다.

반응형