不管是想要将重要的信息放到表格的开头,以便读者第一时间查阅,还是想修正表格中错误的排序,你都需要在 Excel 中重新排列行或列。使用 Python 进行这一操作可以使你轻松改变电子表格中数据的排序,并减少人工操作的错漏。
本文将介绍怎样使用 Spire.XLS for Python 在 Python 中重新排列 Excel 表格中的行或列。
安装 Spire.XLS for Python
本教程需要 Spire.XLS for Python 和 plum-dispatch v1.7.4。您可以通过以下 pip 命令将它们轻松安装到 Windows 中。
pip install Spire.XLS
如果您不确定如何安装,请参考此教程: 如何在 Windows 中安装 Spire.XLS for Python。
Python 重新排列 Excel 表格中的列
Spire.XLS 并未提供直接重新排列 Excel 工作表中列或行顺序的方法。解决方案需要创建一个目标工作表的副本。然后,你可以将副本工作表中的行或列以调整后的顺序复制到原始表格中。
下面是使用 Python 重新排列 Excel 表格中的列的步骤:
- 创建一个 Workbook 对象。
- 从指定文件路径加载 Excel 文档。
- 使用 Workbook.Worksheets[] 属性获取目标工作表。
- 在列表中确定列的新顺序。
- 创建一个临时工作表,将目标表格中的数据复制到该表格中。
- 通过 Worksheet.Columns[].Copy() 方法,将临时工作表中的列按所需顺序复制到目标工作表。
- 删除临时工作表。
- 将工作簿保存为另一个 Excel 文档。
- Python
from spire.xls import *
from spire.xls.common import *
# 创建一个 Workbook 对象
workbook = Workbook()
# 加载 Excel 文档
workbook.LoadFromFile("sample2.xlsx")
# 获取指定工作表
targetSheet = workbook.Worksheets[0]
# 在列表中指定新的列的顺序(列的索引从0开始)
newColumnOrder = [0, 1, 2, 3, 7, 8, 9, 4, 5, 6, 10]
# 添加一个临时工作表
tempSheet = workbook.Worksheets.Add("temp")
# 将目标工作表的数据复制到临时工作表中
tempSheet.CopyFrom(targetSheet)
# 遍历新顺序列表
for i in range(len(newColumnOrder)):
# 将临时工作表的列按新顺序复制到目标工作表中
tempSheet.Columns[newColumnOrder[i]].Copy(targetSheet.Columns[i], True, True)
# 重置目标工作表的列宽
targetSheet.Columns[i].ColumnWidth = tempSheet.Columns[newColumnOrder[i]].ColumnWidth
# 删除临时工作表
workbook.Worksheets.Remove(tempSheet)
# 保存工作簿为新的 Excel 文档
workbook.SaveToFile("output/重排-列.xlsx", FileFormat.Version2016)
# 释放资源
workbook.Dispose()
Python 重新排列 Excel 表格中的行
在 Excel 电子表格中重新排列行的方法与调整列的顺序方法相类似。以下是重新排列 Excel 工作表中行的步骤。
- 创建一个 Workbook 对象。
- 从指定文件路径加载 Excel 文档。
- 利用 Workbook.Worksheets[] 属性获取目标工作表。
- 将新顺序整理到列表。
- 创建一个临时工作表,并将目标工作表的数据复制到其中。
- 通过 Worksheet.Rows[].Copy() 方法, 按照新顺序将临时工作表的行复制到目标工作表中。
- 删除临时工作表。
- 将修改后的工作簿保存为新文档。
- Python
from spire.xls import *
from spire.xls.common import *
# 创建一个 Workbook 对象
workbook = Workbook()
# 加载 Excel 文档
workbook.LoadFromFile("sample2.xlsx")
# 获取指定工作表
targetSheet = workbook.Worksheets[0]
# 在列表中指定新的行的顺序(行的索引从0开始)
newRowOrder = [0, 1, 4, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
# 添加一个临时工作表
tempSheet = workbook.Worksheets.Add("temp")
# 将目标工作表的数据复制到临时工作表中
tempSheet.CopyFrom(targetSheet)
# 遍历新顺序列表
for i in range(len(newRowOrder)):
# 将临时工作表的行按新顺序复制到目标工作表中
tempSheet.Rows[newRowOrder[i]].Copy(targetSheet.Rows[i], True, True)
# 重置目标工作表的行高
targetSheet.Rows[i].RowHeight = tempSheet.Rows[newRowOrder[i]].RowHeight
# 删除临时工作表
workbook.Worksheets.Remove(tempSheet)
# 保存工作簿为新的 Excel 文档
workbook.SaveToFile("output/重排-行.xlsx", FileFormat.Version2016)
# 释放资源
workbook.Dispose()
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。