Python으로 Excel 워크시트 추가, 삭제 및 이동하기
일상적인 데이터 처리와 보고서 생성 과정에서 기존 Excel 파일에 새 워크시트(Worksheet)를 추가하거나, 여러 워크시트가 포함된 Excel 파일을 동적으로 생성해야 하는 경우가 빈번합니다. 본 문서에서는 무료 라이브러리 Free Spire.XLS for Python을 이용해 간결한 코드로 Excel 워크시트 생성, 일괄 추가, 위치 조정, 삭제 및 중복 확인 등 핵심 기능을 구현하는 방법을 소개합니다.
필요 라이브러리 설치
pip install Spire.Xls.Free
기본 사용법: Excel 새로 생성 후 워크시트 추가
아래 예제는 새 워크북을 생성하고, 기본으로 생성된 워크시트를 삭제한 뒤 워크시트명을 지정하고 기본 데이터를 입력하는 가장 기본적인 사용 시나리오입니다.
from spire.xls import *
# 워크북 객체 생성
workbook = Workbook()
# 기본 생성된 첫 번째 워크시트 삭제 (선택 사항)
workbook.Worksheets.Clear()
# 첫 번째 워크시트 추가
sheet1 = workbook.Worksheets.Add("판매 데이터")
sheet1.Range["A1"].Text = "월"
sheet1.Range["B1"].Text = "매출액"
# 파일 저장
workbook.SaveToFile("워크시트 추가.xlsx", FileFormat.Version2016)
workbook.Dispose()
여러 빈 워크시트 일괄 추가
CreateEmptySheets 메서드를 사용하면 한 번에 여러 개의 빈 워크시트를 생성할 수 있습니다 (해당 메서드 실행 시 기존 워크시트는 모두 삭제됩니다).
from spire.xls import *
workbook = Workbook()
# 빈 워크시트 3개 생성 (기존 워크시트 전체 삭제)
sheetCount = 3
workbook.CreateEmptySheets(sheetCount)
# 결과 파일 저장
workbook.SaveToFile("다중 워크시트 예시.xlsx", ExcelVersion.Version2013)
workbook.Dispose()기존 Excel 파일에 워크시트 추가
실무에서 가장 흔한 시나리오는 기존 Excel 파일을 불러온 뒤 파일 맨 뒤에 새 워크시트를 추가하는 것입니다.
from spire.xls import *
# 기존 파일 로드
workbook = Workbook()
workbook.LoadFromFile("연간 보고서.xlsx")
# 새 워크시트 추가
new_sheet = workbook.Worksheets.Add("4분기 데이터")
new_sheet.Range["A1"].Text = "분기"
new_sheet.Range["B1"].Text = "매출"
# 예시 데이터 여러 행 입력
for i in range(1, 4):
new_sheet.Range[f"A{i+1}"].Text = f"Q{i}"
new_sheet.Range[f"B{i+1}"].NumberValue = 10000 * i
# 저장 (원본 덮어쓰기 또는 새 파일로 저장 가능)
workbook.SaveToFile("연간 보고서_업데이트.xlsx", FileFormat.Version2016)
workbook.Dispose()고급 기능: 워크시트 위치 이동 및 삭제
워크시트 순서 변경
워크시트의 MoveWorksheet 메서드를 통해 워크북 내 위치를 조정할 수 있습니다. 매개변수는 대상 인덱스이며 0부터 시작합니다.
# 첫 번째 워크시트 가져오기
sheet = workbook.Worksheets[0]
# 해당 워크시트를 인덱스 2번 위치로 이동 (세 번째 워크시트로 배치)
sheet.MoveWorksheet(2)
유의 사항: 이동 작업을 실행하기 전에
workbook객체를 먼저 로드하거나 생성해야 합니다.
워크시트 삭제
인덱스 기반 삭제와 시트명 기반 삭제 두 가지 방식을 지원합니다:
# 인덱스로 삭제 (첫 번째 워크시트 삭제)
workbook.Worksheets.RemoveAt(0)
# 시트명으로 삭제
worksheet = workbook.Worksheets["Sheet1"]
workbook.Worksheets.Remove(worksheet)
워크시트 존재 여부 확인
자동화 스크립트에서 동일한 이름의 워크시트를 중복 추가하여 발생하는 오류를 방지하기 위해 확인 함수를 구현할 수 있습니다:
def add_sheet_if_not_exists(workbook, sheet_name):
for sheet in workbook.Worksheets:
if sheet.Name == sheet_name:
print(f"워크시트 '{sheet_name}'은(는) 이미 존재합니다.")
return None
new_sheet = workbook.Worksheets.Add(sheet_name)
print(f"워크시트 '{sheet_name}' 추가 완료.")
return new_sheet
# 사용 예시
workbook = Workbook()
workbook.LoadFromFile("데이터.xlsx")
add_sheet_if_not_exists(workbook, "새 분석 시트")
workbook.SaveToFile("데이터_업데이트.xlsx", FileFormat.Version2016)
workbook.Dispose()
유의 사항
무료 버전 제한
Free Spire.XLS for Python 무료 버전은 처리 가능한 워크시트 수와 행 수에 일정 제한이 있습니다. 간단한 보고서와 소규모 데이터 처리에는 충분하지만, 대용량 데이터 처리 시에는 openpyxl 등 다른 오픈소스 라이브러리를 검토하는 것을 권장합니다.
파일 형식
저장 시
FileFormat.Version2016또는Version2013을 사용하여 표준.xlsx파일을 생성하는 것을 권장합니다. 구버전.xls형식으로 저장해야 할 경우Version97to2003을 사용할 수 있습니다.리소스 해제
작업 완료 후
workbook.Dispose()를 호출하여 리소스를 해제해 주십시오. 특히 반복문 또는 일괄 처리 환경에서 메모리 점유를 방지하기 위함입니다.
정리
Excel 워크시트 추가는 몇 줄의 코드로 구현할 수 있습니다. Workbook을 생성하거나 로드한 후 Worksheets.Add() 메서드를 호출하고 파일을 저장하면 됩니다. 본 라이브러리는 워크시트명, 위치, 내용을 관리하는 직관적인 API를 제공하며, 코드가 간결하고 Office에 의존하지 않아 자동화 스크립트나 보고서 시스템에서 다중 워크시트 Excel을 빠르게 생성하기에 매우 적합합니다.