Python/xlwings

xlwings RuntimeError: Workbook is already opened 오류 해결하기

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

소개

xlwings를 사용하여 Excel 파일을 자동화하다가 'RuntimeError: Workbook is already opened' 오류에 직면하는 경우가 종종 있습니다. 이 오류는 동일한 워크북이 이미 열려 있을 때 발생하며, 이로 인해 새로운 인스턴스를 시작할 수 없습니다. 이번 포스트에서는 이 오류의 원인과 해결 방법에 대해 자세히 알아보겠습니다.

에러 발생 예시 코드

우선, 'RuntimeError: Workbook is already opened' 오류가 발생할 수 있는 간단한 예시 코드를 살펴보겠습니다.

import xlwings as xw

# Excel 워크북 열기
workbook1 = xw.Book('example.xlsx')

# 같은 워크북 재열기 시도
workbook2 = xw.Book('example.xlsx')  # 오류 발생

에러 해결 방법

1. 이미 열려 있는 워크북 참조하기

이미 열려 있는 워크북에 접근하기 위해서는 'xw.books'를 사용하여 열린 모든 워크북 목록을 확인하고, 해당 워크북을 참조해야 합니다.

import xlwings as xw

# 열린 모든 워크북 확인
for book in xw.books:
    if book.name == 'example.xlsx':
        workbook = book  # 이미 열린 워크북 참조
        break
else:
    workbook = xw.Book('example.xlsx')  # 열려 있지 않으면 새로 열기

print(workbook)

2. 워크북 닫기 후 다시 열기

만약 새로운 인스턴스를 열고 싶다면, 이미 열린 워크북을 닫고 다시 열 수 있습니다:

import xlwings as xw

# 열린 모든 워크북 확인 및 닫기
for book in xw.books:
    if book.name == 'example.xlsx':
        book.close()
        break

# 워크북 다시 열기
workbook = xw.Book('example.xlsx')
print(workbook)

마무리

이번 블로그에서는 xlwings에서 발생할 수 있는 'RuntimeError: Workbook is already opened' 오류의 원인과 해결 방법을 살펴보았습니다. 열린 워크북을 참조하거나, 이미 열려 있는 워크북을 닫고 새로 여는 방법을 통해 이 오류를 쉽게 해결할 수 있습니다. 자동화 작업을 할 때는 항상 열려 있는 리소스를 잘 관리해야 함을 잊지 마세요!

반응형