背景:

某工作簿中的sheet页是如图这样排序,如果想要按照 Sheet1, Sheet2, Sheet3的顺序排序,应该如何操作呢?
当前没有对sheet页排序的指令,可以用python实现。
注意:需要先将excel关闭
代码:
import win32com.client
def open_and_sort_workbook(workbook_path, order_list):
'''
打开指定的工作簿,并根据提供的列表顺序对其中的Sheet页进行排序
workbook_path: 工作簿的完整路径
order_list: 一个列表,包含Sheet页的新顺序(按名称)
Excel.Application指定以微软的office打开,ket.Application指定以WPS打开
'''
excel = win32com.client.DispatchEx('ket.Application')
excel.Visible = True # 设置Excel可见,可以根据需要改为False
# 尝试打开指定的工作簿
wb =excel.Workbooks.Open(Filename=workbook_path)
try:
sheets = wb.Sheets
# 确保order_list中的元素是有效的Sheet名称,并构建一个映射表
valid_sheets = {sheet.Name: sheet for sheet in sheets}
sorted_order = []
for item in order_list:
if item in valid_sheets:
sorted_order.append(item)
else:
raise ValueError(f"列表中包含无效的Sheet名称: {item}")
# 移动Sheet以匹配给定的顺序
for target_index, sheet_name in enumerate(sorted_order, start=1):
if valid_sheets[sheet_name].Index != target_index:
valid_sheets[sheet_name].Move(Before=sheets(target_index))
except Exception as e:
print(f"打开或操作工作簿时发生错误: {e}")
finally:
# 根据需要,可以选择保存和关闭工作簿及Excel应用程序
wb.Save()
excel.Quit()
# 使用示例
workbook_path = r'D:\desktop\你好.xlsx'
open_and_sort_workbook(workbook_path, ['Sheet1', 'Sheet2', 'Sheet3'])