들어가기 전에
Excel 워크시트를 분할하면 데이터 분석, 보고, 협업 등을 보다 쉽게 할 수 있습니다. 파이썬과 파이썬용 라이브러리(Spire.XLS)를 사용하여 Excel 워크시트를 분할하는 다양한 방법을 소개합니다.
※ 이 글은 아래 기사 내용을 토대로 작성되었습니다만, 필자의 개인 의견이나 추가 자료들이 다수 포함되어 있습니다.
- 원문: Split Excel Worksheets with Python: A Step-by-Step Guide
- URL: https://python.plainenglish.io/split-excel-worksheets-with-python-a-step-by-step-guide-0da7752962e3
라이브러리 설치
Python용 Spire.XLS는 Microsoft Excel 파일을 처리하기 위한 풍부한 기능을 갖춘 Python 라이브러리입니다. 이 라이브러리를 사용하면 Excel 워크시트를 분할하거나 병합할 수 있어 데이터 처리 및 자동화 작업에 유용한 도구로 사용할 수 있습니다. 이 라이브러리는 PyPI에서 다음 pip 명령을 사용하여 설치할 수 있습니다.
pip install Spire.XLS
워크시트 분할을 위한 핵심 메서드
Python용 Spire.XLS는 워크시트를 분할하는 직접적인 메서드를 제공하지 않습니다. 그러나 동일한 통합 문서 내에서 또는 다른 통합 문서 간에 행, 열, 셀 범위 또는 전체 워크시트를 복사하는 몇 가지 메서드를 제공합니다.
- WorksheetsCollection.AddCopy(): 워크시트의 복사본을 동일한 통합 문서 또는 다른 통합 문서에 추가합니다.
- Worksheet.CopyColumn(): 동일한 워크시트 내 또는 다른 워크시트 간에 열을 복사합니다.
- Worksheet.CopyRow():동일한 워크시트 내 또는 다른 워크시트 간에 행을 복사합니다.
- Worksheet.Copy():같은 워크시트 내 또는 다른 워크시트 간에 셀 범위를 복사합니다.
Spire.XLS를 사용하여 워크시트를 분할하려면 다음 단계를 따릅니다.
- 새 통합 문서를 만듭니다.
- 위에서 언급한 방법을 사용하여 전체 워크시트 또는 지정된 범위의 셀을 원본 통합 문서에서 새 통합 문서로 복사합니다.
이 방법을 사용하면 새 통합 문서를 만들고 원하는 콘텐츠를 원본 통합 문서에서 새 통합 문서로 전송하여 효과적으로 워크시트를 분할할 수 있습니다.
파이썬에서 각 워크시트를 별도의 Excel 파일로 분할하기
Excel 통합 문서의 워크시트를 개별 Excel 파일로 분할하려면 다음 단계를 따릅니다.
- 소스 Excel 문서를 로드합니다.
- Excel 문서의 각 워크시트를 반복합니다.
- 각 워크시트에 대해 다음 작업을 수행합니다.
- 새 통합 문서를 만듭니다.
- AddCopy()메서드를 사용하여 현재 워크시트를 원본 문서에서 새 통합 문서로 복사합니다.
- 새 통합 문서를 개별 Excel 파일에 저장합니다.
이 프로세스에 따라 여러 워크시트가 포함된 단일 Excel 통합 문서를 개별 Excel 파일로 분할할 수 있으며, 각 파일에는 원본 통합 문서의 워크시트가 하나씩 포함됩니다.
from spire.xls import *
from spire.xls.common import *
# Create a Workbook object
workbook = Workbook()
# Load an Excel file
workbook.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Input.xlsx")
# Specify the folder path for the generated Excel files
folderPath = "C:\\Users\\Administrator\\Desktop\\Output\\"
# Iterate through the worksheets in the Excel file
for worksheet in workbook.Worksheets:
# Create a new Workbook object for each worksheet
newWorkbook = Workbook()
# Remove the default worksheets from the new workbook
newWorkbook.Worksheets.Clear()
# Copy the worksheet from the Excel file to the new workbook
newWorkbook.Worksheets.AddCopy(worksheet)
# Save the new workbook to the specified folder
newWorkbook.SaveToFile(folderPath + worksheet.Name + ".xlsx", FileFormat.Version2016)
# Dispose resource
workbook.Dispose()
파이썬에서 열별로 워크시트 분할하기
워크시트를 열별로 분할하려면 다음 단계를 따릅니다.
- 소스 Excel 문서를 로드합니다.
- 새 통합 문서를 만들고 워크시트를 추가합니다.
- CopyColumn()메서드를 사용하여 선택한 열을 소스 문서에서 새 통합 문서의 워크시트로 복사합니다.
- 새 통합 문서를 개별 Excel 파일로 저장합니다.
- 2 ~ 4단계를 반복하여 원본 문서의 열 하위 집합을 각각 포함하는 Excel 파일을 더 만듭니다.
from spire.xls import *
from spire.xls.common import *
# Create a Workbook object
workbook = Workbook()
# Load an Excel file
workbook.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Employees.xlsx")
# Get the worksheet you want to split
worksheet = workbook.Worksheets[0]
# Specify the folder path for the generated Excel files
folderPath = "C:\\Users\\Administrator\\Desktop\\Output\\"
# Create a new Workbook object
newWorkbook1 = Workbook()
# Remove the default worksheets
newWorkbook1.Worksheets.Clear()
# Add a new worksheet
newWorksheet1 = newWorkbook1.Worksheets.Add("Sheet1")
# Copy columns 1-3 from the original worksheet to the new worksheet
for i in range(1, 4):
worksheet.CopyColumn(worksheet.Columns[i-1], newWorksheet1, newWorksheet1.LastDataColumn + 1, CopyRangeOptions.All)
# Copy row heights from the original worksheet to the new worksheet
for i in range(worksheet.Rows.Count):
newWorksheet1.SetRowHeight(i + 1, worksheet.GetRowHeight(i + 1))
# Save the new workbook to the specified folder
newWorkbook1.SaveToFile(folderPath + "NewExcel_One.xlsx", FileFormat.Version2016)
newWorkbook1.Dispose()
# Create a new Workbook object
newWorkbook2 = Workbook()
# Remove the default worksheets
newWorkbook2.Worksheets.Clear()
# Add a new worksheet
newWorksheet2 = newWorkbook2.Worksheets.Add("Sheet1")
# Copy columns 4-6 from the original worksheet to the new worksheet
for i in range(4, 7):
worksheet.CopyColumn(worksheet.Columns[i-1], newWorksheet2, newWorksheet2.LastDataColumn + 1, CopyRangeOptions.All)
# Copy row heights from the original worksheet to the new worksheet
for i in range(worksheet.Rows.Count):
newWorksheet2.SetRowHeight(i + 1, worksheet.GetRowHeight(i + 1))
# Save the new workbook to the specified folder
newWorkbook2.SaveToFile(folderPath + "NewExcel_Two.xlsx", FileFormat.Version2016)
# Dispose resources
newWorkbook1.Dispose()
newWorkbook2.Dispose()
파이썬에서 워크시트를 행별로 분할하기
워크시트를 행별로 분할하려면 다음 단계를 따릅니다.
- 소스 Excel 문서를 로드합니다.
- 새 통합 문서를 만들고 워크시트를 추가합니다.
- CopyRow() 메서드를 사용하여 선택한 행을 소스 문서에서 새 통합 문서의 워크시트로 복사합니다.
- 새 통합 문서를 개별 Excel 파일로 저장합니다.
- 2 ~ 4단계를 반복하여 원본 문서의 행 하위 집합을 포함하는 Excel 파일을 더 만듭니다.
from spire.xls import *
from spire.xls.common import *
# Create a Workbook object
workbook = Workbook()
# Load an Excel file
workbook.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Employees.xlsx")
# Get the worksheet you want to split
worksheet = workbook.Worksheets[0]
# Get the header row
header = worksheet.Rows[0]
# Specify the folder path for the generated Excel files
folderPath = "C:\\Users\\Administrator\\Desktop\\Output\\"
# Create a new Workbook object
newWorkbook1 = Workbook()
# Remove the default worksheets
newWorkbook1.Worksheets.Clear()
# Add a new worksheet
newWorksheet1 = newWorkbook1.Worksheets.Add("Sheet1")
# Copy rows 1-6 from the target worksheet to the new worksheet
for i in range(1, 7):
worksheet.CopyRow(worksheet.Rows[i - 1], newWorksheet1, newWorksheet1.LastDataRow + 1, CopyRangeOptions.All)
# Copy column widths from the original worksheet to the new worksheet
for i in range(worksheet.Columns.Count):
newWorksheet1.SetColumnWidth(i+1, worksheet.GetColumnWidth(i+1))
# Save the new workbook to the specified folder
newWorkbook1.SaveToFile(folderPath + "R&D.xlsx", FileFormat.Version2016)
# Create a new Workbook object
newWorkbook2 = Workbook()
# Remove the default worksheets
newWorkbook2.Worksheets.Clear()
# Add a new worksheet
newWorksheet2 = newWorkbook2.Worksheets.Add("Sheet1")
# Copy header row from the original worksheet to the new worksheet
worksheet.CopyRow(worksheet.Rows[0], newWorksheet2, newWorksheet2.LastDataRow + 1, CopyRangeOptions.All)
# Copy rows 7-11 from the original worksheet to the new worksheet
for i in range(7, 12):
worksheet.CopyRow(worksheet.Rows[i - 1], newWorksheet2, newWorksheet2.LastDataRow + 1, CopyRangeOptions.All)
# Copy column widths from the original worksheet to the new worksheet
for i in range(worksheet.Columns.Count):
newWorksheet2.SetColumnWidth(i + 1, worksheet.GetColumnWidth(i + 1))
# Save the new workbook to the specified folder
newWorkbook2.SaveToFile(folderPath + "Operations.xlsx", FileFormat.Version2016)
# Dispose resources
newWorkbook1.Dispose()
newWorkbook2.Dispose()
셀 범위로 워크시트 분할
워크시트를 셀 범위별로 분할하는 단계는 다음과 같습니다.
- 원본 Excel 문서를 로드합니다.
- 새 통합 문서를 만들고 워크시트를 추가합니다.
- Copy()메서드를 사용하여 지정된 범위의 셀을 원본 문서에서 새 통합 문서의 워크시트로 복사합니다.
- 새 통합 문서를 개별 Excel 파일로 저장합니다.
from spire.xls import *
from spire.xls.common import *
# Create a Workbook object
workbook = Workbook()
# Load an Excel file
workbook.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Employees.xlsx")
# Get the worksheet you want to split
worksheet = workbook.Worksheets[0]
# Get a cell range from the worksheet
sourceRange = worksheet.Range["A1:D7"];
# Create a new Workbook object
newWorkbook = Workbook()
# Remove the default worksheets
newWorkbook.Worksheets.Clear()
# Add a new worksheet
newWorksheet = newWorkbook.Worksheets.Add("Sheet1")
# Copy the cell range to the new worksheet
worksheet.Copy(sourceRange, newWorksheet, 1, 1)
# Copy column widths from the original worksheet to the new worksheet
for i in range(worksheet.Columns.Count):
newWorksheet.SetColumnWidth(i + 1, worksheet.GetColumnWidth(i + 1))
# Specify the folder path for the generated Excel files
folderPath = "C:\\Users\\Administrator\\Desktop\\Output\\"
# Save the new workbook to the specified folder
newWorkbook.SaveToFile(folderPath + "CellRange.xlsx", FileFormat.Version2016)
newWorkbook.Dispose()
# Dispose resources
newWorkbook.Dispose()
마치며
Excel 통합 문서 내의 각 워크시트를 별도의 Excel 파일로 분할하고 열, 행 및 셀 범위별로 워크시트를 분할하는 등 Excel 워크시트를 분할하는 몇 가지 유용한 기법에 대해 소개했습니다. Excel 데이터를 확장하는 데 유익하고 도움이 되었기를 바랍니다.
'Python' 카테고리의 다른 글
파이썬에서 PDF를 Word로 변환하는 5가지 방법 (5) | 2024.10.01 |
---|---|
파이썬을 사용하여 PDF에서 이미지와 이미지 정보 추출하기 (2) | 2024.09.29 |
파이썬으로 PDF 파일을 암호화하고 해독하는 방법 (8) | 2024.09.22 |
파이썬을 사용하여 Excel에서 다양한 유형의 차트 만들기 (11) | 2024.09.14 |
파이썬을 사용하여 손쉽게 PDF 분할 및 병합하기 (2) | 2024.09.10 |