본문 바로가기
Python/xlwings

xlwings 오류 해결하기: ValueError: Incorrect number of rows/columns

by PySun 2024. 11. 23.
반응형

소개

xlwings를 사용하다가 'ValueError: Incorrect number of rows/columns' 에러가 발생하는 경우가 종종 있습니다. 이 에러는 데이터의 행이나 열 수가 예상과 다를 때 발생합니다. 이 블로그 글에서는 이러한 에러가 발생하는 원인과 함께 해결 방법에 대해 알아보겠습니다.

에러 발생 예시 코드

먼저, 'ValueError: Incorrect number of rows/columns' 에러가 발생할 수 있는 간단한 예시 코드를 살펴보겠습니다.

import xlwings as xw

# 새로운 엑셀 애플리케이션 실행
app = xw.App(visible=False)
wb = app.books.add()
sheet = wb.sheets[0]

# 데이터 작성 - 행과 열 수 불일치
data = [[1, 2, 3], [4, 5]]  # 두 번째 행에 열이 하나 부족함
sheet.range('A1').value = data

wb.save('test.xlsx')
wb.close()
app.quit()

에러 해결 방법

1. 데이터 구조 확인

데이터를 올바르게 작성하고 있는지 먼저 확인해야 합니다. 각 행의 열 수가 일치해야 합니다. 위의 코드에서 두 번째 행의 열 개수를 맞추어야 합니다.

import xlwings as xw

# 새로운 엑셀 애플리케이션 실행
app = xw.App(visible=False)
wb = app.books.add()
sheet = wb.sheets[0]

# 데이터 작성 - 행과 열 수 일치
data = [[1, 2, 3], [4, 5, 6]]  # 모든 행에 동일한 수의 열
sheet.range('A1').value = data

wb.save('test.xlsx')
wb.close()
app.quit()

2. 리스트의 리스트 확인

이중 리스트를 사용할 때는 각 리스트가 동일한 길이를 가지도록 확인하세요. 예를 들어, 아래와 같은 경우는 불일치로 인해 에러를 발생시킬 수 있습니다. 데이터가 한 행에 비어있지 않도록 보장합니다.

import xlwings as xw

# 새로운 엑셀 애플리케이션 실행
app = xw.App(visible=False)
wb = app.books.add()
sheet = wb.sheets[0]

# 데이터 작성 전에 각 행의 길이 점검
data = [[1, 2, 3], [4, 5]]  # 잘못된 데이터 구조

if all(len(row) == len(data[0]) for row in data):
    sheet.range('A1').value = data
else:
    print("에러: 데이터의 행/열 수가 일치하지 않습니다.")

wb.close()
app.quit()

마무리

이번 블로그 글에서는 xlwings에서 발생할 수 있는 'ValueError: Incorrect number of rows/columns' 에러에 대해 알아보았습니다. 데이터의 구조를 점검하는 것이 중요하며, 각 행의 열 수가 일치하는지 확인함으로써 이러한 오류를 해결할 수 있습니다. xlwings를 사용할 때는 항상 제공되는 데이터의 형식을 주의 깊게 살펴보는 것이 좋습니다.

반응형