Working with large Excel workbooks can sometimes become unwieldy, especially when you need to share or distribute parts of the data independently. In these cases, it can be helpful to split your Excel file into multiple smaller files. This not only makes the individual files more manageable, but also allows you to better organize and share your data. In this article, we will demonstrate how to split an Excel file in Python using Spire.XLS for Python.
Install Spire.XLS for Python
This scenario requires Spire.XLS for Python and plum-dispatch v1.7.4. They can be easily installed in your Windows through the following pip command.
pip install Spire.XLS
If you are unsure how to install, please refer to this tutorial: How to Install Spire.XLS for Python on Windows
Split Excel by Worksheets in Python
If your Excel file contains multiple worksheets, you can easily split each sheet into an Excel file by using the Workbook.Worksheets.AddCopy() method provided by Spire.XLS for Python. The detailed steps are as follows.
- Create an object of the Workbook class.
- Load an Excel file using Workbook.LoadFromFile() method.
- Iterate through the worksheets in the Excel file.
- For each worksheet, create a new Workbook object for it.
- Remove the default worksheets in the new workbook using Workbook.Worksheets.Clear() method.
- Copy the worksheet to the new workbook using Workbook.Worksheets.AddCopy() method.
- Save the new workbook to an Excel file using Workbook.SaveToFile() method.
- Python
from spire.xls import * from spire.xls.common import * # Create an object of the Workbook class workbook = Workbook() # Load an Excel file workbook.LoadFromFile("Sample.xlsx") # Specify the folder path for the generated Excel files folderPath = "C:\\Users\\Administrator\\Desktop\\Output\\" # Iterate through all worksheets in the Excel file for worksheet in workbook.Worksheets: # For each worksheet, create a new Workbook object newWorkbook = Workbook() # Remove the 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) workbook.Dispose()
Split Excel by Rows in Python
If you have a large worksheet where a specific number of rows represent a unique record or entry, you can extract these individual rows or records into separate Excel files for focused data analysis using the Worksheet.CopyRow() method. The detailed steps are as follows.
- Create an object of the Workbook class.
- Load an Excel file using Workbook.LoadFromFile() method.
- Get the original worksheet where you want to copy rows from using Workbook.Worksheets[index] property.
- Create a new Workbook object and remove the default worksheets from the new workbook using Workbook.Worksheets.Clear() method.
- Add a new Worksheet to the new workbook using Workbook.Worksheets.Add() method.
- Copy specific rows from the original worksheet to the new worksheet using Worksheet.CopyRow() method.
- Copy Column widths from the original worksheet to the new worksheet.
- Save the new workbook to an Excel file using Workbook.SaveToFile() method.
- Python
from spire.xls import * from spire.xls.common import * # Create a Workbook object and load an Excel file workbook = Workbook() workbook.LoadFromFile("Sample.xlsx") # Get the original (the 1st) worksheet 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-5 from the original worksheet to the new worksheet for i in range(1, 6): 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 + "Rows1-5.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 header row from the original worksheet to the new worksheet worksheet.CopyRow(worksheet.Rows[0], newWorksheet2, newWorksheet2.LastDataRow + 1, CopyRangeOptions.All) # Copy rows 6-10 from the original worksheet to the new worksheet for i in range(6, 11): 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 + "Rows6-10.xlsx", FileFormat.Version2016) newWorkbook2.Dispose()
Split Excel by Columns in Python
In addition to splitting by rows, you can also split an Excel file by columns using the Worksheet.CopyColumn() method. The detailed steps are as follows.
- Create an object of the Workbook class.
- Load an Excel file using Workbook.LoadFromFile() method.
- Get the original worksheet where you want to copy columns from using Workbook.Worksheets[index] property.
- Create a new Workbook object and remove the default worksheets from the new workbook using Workbook.Worksheets.Clear() method.
- Add a new Worksheet to the new workbook using Workbook.Worksheets.Add() method.
- Copy specific columns from the original worksheet to the new worksheet using Worksheet.CopyColumn() method.
- Copy row heights from the original worksheet to the new worksheet.
- Save the new workbook to an Excel file using Workbook.SaveToFile() method.
- Python
from spire.xls import * from spire.xls.common import * # Create a Workbook object and load an Excel file workbook = Workbook() workbook.LoadFromFile("Sample.xlsx") # Get the original (the 1st) worksheet 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-2 from the original worksheet to the new worksheet for i in range(1, 3): 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 + "Columns1-2.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 3-5 from the original worksheet to the new worksheet for i in range(3, 6): 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 + "Columns3-5.xlsx", FileFormat.Version2016) newWorkbook2.Dispose()
Apply for a Temporary License
If you'd like to remove the evaluation message from the generated documents, or to get rid of the function limitations, please request a 30-day trial license for yourself.