본문 바로가기
Python/xlwings

xlwings 오류 해결하기: TypeError: item() argument 1 must be str, not int

by PySun 2024. 11. 22.
반응형

소개

xlwings를 사용하다가 'TypeError: item() argument 1 must be str, not int' 에러가 발생하면 당황스러울 수 있습니다. 이 오류는 주로 Excel의 셀에 접근하는 과정에서 잘못된 데이터 타입을 사용했기 때문에 발생합니다. 이 블로그 글에서는 이 에러의 원인과 해결 방법에 대해 살펴보겠습니다.

에러 발생 예시 코드

먼저, 'TypeError: item() argument 1 must be str, not int' 에러가 발생할 수 있는 간단한 예시 코드를 살펴보겠습니다.

import xlwings as xw

# Excel 애플리케이션 시작
app = xw.App(visible=True)

# 새로운 워크북 생성
workbook = app.books.add()

# 시트 선택
sheet = workbook.sheets[0]

# 잘못된 인덱스를 사용해 셀에 접근 (정수 대신 문자열 사용)
value = sheet.range(1, 1).value
print(value)

에러 해결 방법

1. 셀 접근 시 인덱스 타입 확인하기

xlwings에서 셀에 접근할 때 인덱스는 1이 아닌 문자열로 주어져야 합니다. 이를 확인하고 적절한 문자열 타입으로 수정해야 합니다.

import xlwings as xw

# Excel 애플리케이션 시작
app = xw.App(visible=True)

# 새로운 워크북 생성
workbook = app.books.add()

# 시트 선택
sheet = workbook.sheets[0]

# 문자열 인덱스 사용하여 셀에 접근
value = sheet.range("A1").value
print(value)

2. 동일한 의미의 인덱스 사용하기

셀 접근 시 정수 대신 'A1'과 같은 문자열을 사용하는 것이 좋습니다. 이는 코드 가독성을 높이고 향후 발생할 수 있는 오류를 줄이는 데 도움을 줍니다.

import xlwings as xw

# Excel 애플리케이션 시작
app = xw.App(visible=True)

# 새로운 워크북 생성
workbook = app.books.add()

# 시트 선택
sheet = workbook.sheets[0]

# 'A1' 같은 전형적인 문자열 인덱스 사용
value = sheet.range("A1").value
print(value)

마무리

이 블로그 글에서는 xlwings에서 발생하는 'TypeError: item() argument 1 must be str, not int' 에러에 대한 해결 방법을 살펴보았습니다. 올바른 인덱스 타입을 사용하고 접근 방식을 조정함으로써 이러한 오류를 쉽게 극복할 수 있습니다. xlwings를 활용할 때는 항상 Excel 셀에 접근할 때의 인덱스 유형에 주의하고, 코드를 보다 명확하게 작성하는 것이 중요합니다.

반응형