Reordering columns or rows in Excel is a simple process that allows you to change the arrangement of data within your spreadsheet. This can be useful for better organizing your data or aligning it with other columns or rows. You can reorder by using drag-and-drop, cut and paste, or keyboard shortcuts depending on the version of Excel you are using.
This article focus on introducing how to programmatically reorder columns or rows in an Excel worksheet 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 system 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
Reorder Columns in Excel in Python
Spire.XLS does not provide a straightforward way to reorganize the order of columns or rows within an Excel worksheet. The solution requires creating a duplicate of the target worksheet. Then, you can copy the columns or rows from the copied worksheet and paste them into the original worksheet in the new preferred column or row sequence.
The following are the steps to reorder columns in an Excel worksheet using Python.
- Create a Workbook object.
- Load an Excel document from the specified file path.
- Get the target worksheet using Workbook.Worksheets[index] property.
- Specify the new column order within a list.
- Create a temporary sheet and copy the data from the target sheet into it.
- Copy the columns from the temporary worksheet to the target worksheet in the desired order using Worksheet.Columns[index].Copy() method.
- Remove the temporary sheet.
- Save the workbook to a different Excel document.
- Python
from spire.xls import * from spire.xls.common import * # Create a Workbook object workbook = Workbook() # Load the Excel document workbook.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Input.xlsx") # Get a specific worksheet targetSheet = workbook.Worksheets[0] # Specify the new column order in a list (the column index starts from 0) newColumnOrder = [3, 0, 1, 2, 4, 5 ,6, 7] # Add a temporary worksheet tempSheet = workbook.Worksheets.Add("temp") # Copy data from the target worksheet to the temporary sheet tempSheet.CopyFrom(targetSheet) # Iterate through the newColumnOrder list for i in range(len(newColumnOrder)): # Copy the column from the temporary sheet to the target sheet in the new order tempSheet.Columns[newColumnOrder[i]].Copy(targetSheet.Columns[i], True, True) # Reset the column width in the target sheet targetSheet.Columns[i].ColumnWidth = tempSheet.Columns[newColumnOrder[i]].ColumnWidth # Remove the temporary sheet workbook.Worksheets.Remove(tempSheet) # Save the workbook to another Excel file workbook.SaveToFile("output/ReorderColumns.xlsx", FileFormat.Version2016) # Dispose resources workbook.Dispose()
Reorder Rows in Excel in Python
Rearranging the rows in an Excel spreadsheet follows a similar approach to reorganizing the columns. The steps to reorder the rows within an Excel worksheet are as outlined below.
- Create a Workbook object.
- Load an Excel document from the specified file path.
- Get the target worksheet using Workbook.Worksheets[index] property.
- Specify the new row order within a list.
- Create a temporary sheet and copy the data from the target sheet into it.
- Copy the rows from the temporary worksheet to the target worksheet in the desired order using Worksheet.Rows[index].Copy() method.
- Remove the temporary sheet.
- Save the workbook to a different Excel document.
- Python
from spire.xls import * from spire.xls.common import * # Create a Workbook object workbook = Workbook() # Load the Excel document workbook.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Input.xlsx") # Get a specific worksheet targetSheet = workbook.Worksheets[0] # Specify the new row order in a list (the row index starts from 0) newRowOrder = [0, 2, 3, 1, 4, 5 ,6, 7, 8, 9, 10, 11, 12] # Add a temporary worksheet tempSheet = workbook.Worksheets.Add("temp") # Copy data from the first worksheet to the temporary sheet tempSheet.CopyFrom(targetSheet) # Iterate through the newRowOrder list for i in range(len(newRowOrder)): # Copy the row from the temporary sheet to the target sheet in the new order tempSheet.Rows[newRowOrder[i]].Copy(targetSheet.Rows[i], True, True) # Reset the row height in the target sheet targetSheet.Rows[i].RowHeight = tempSheet.Rows[newRowOrder[i]].RowHeight # Remove the temporary sheet workbook.Worksheets.Remove(tempSheet) # Save the workbook to another Excel file workbook.SaveToFile("output/ReorderRows.xlsx", FileFormat.Version2016) # Dispose resources workbook.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.