如何使用Python重排Excel文件中的工作表?(含test.xlsx实例)
用Python重排Excel工作表的实现方法
下面提供两种常用的实现方案,针对.xlsx格式的test.xlsx文件,将工作表顺序从['Sheet1', 'Sheet2', 'Sheet3']调整为['Sheet3', 'Sheet1', 'Sheet2']:
方法一:使用openpyxl(直接操作工作表顺序,高效)
openpyxl是专门处理Excel xlsx格式的库,无需读取工作表数据即可调整顺序,适合仅调整表结构的场景。
- 先安装依赖库:
pip install openpyxl
- 实现代码:
from openpyxl import load_workbook # 加载目标Excel文件 wb = load_workbook('test.xlsx') # 定义期望的工作表顺序 target_order = ['Sheet3', 'Sheet1', 'Sheet2'] # 遍历目标顺序,设置每个工作表的位置索引(索引从0开始) for idx, sheet_name in enumerate(target_order): wb[sheet_name].index = idx # 保存修改后的文件(可选择覆盖原文件或另存为新文件) wb.save('test_reordered.xlsx')
说明:
- 工作表的
index属性决定了它在Excel中的位置,0对应第一个标签页,1对应第二个,以此类推 - 若需直接覆盖原文件,将
save的文件名改为test.xlsx即可,建议操作前备份原文件
方法二:使用pandas(适合需同时处理数据的场景)
如果需要在调整顺序的同时处理工作表数据,pandas是更便捷的选择。
- 安装依赖库(若未安装):
pip install pandas openpyxl
- 实现代码:
import pandas as pd # 读取所有工作表到字典(键为工作表名,值为DataFrame) all_sheets = pd.read_excel('test.xlsx', sheet_name=None) # 按目标顺序筛选工作表 ordered_sheets = {name: all_sheets[name] for name in ['Sheet3', 'Sheet1', 'Sheet2']} # 将整理后的工作表写入新文件 with pd.ExcelWriter('test_reordered.xlsx') as writer: for sheet_name, df in ordered_sheets.items(): df.to_excel(writer, sheet_name=sheet_name, index=False)
说明:
read_excel的sheet_name=None参数会读取文件中所有工作表index=False用于避免将DataFrame的索引列写入Excel,若需保留索引可移除该参数
注意事项
- 上述方法仅支持
.xlsx格式,若处理.xls文件,需改用xlrd和xlwt库(注意xlrd 2.0+不再支持xls格式,需安装xlrd<2.0版本) - 确保目标顺序中的工作表名称与原文件完全一致,否则会抛出
KeyError异常
内容的提问来源于stack exchange,提问作者Min Chen
相关产品推荐
相关产品推荐

