【解决方案】对excel工作表进行排序
评论
收藏

【解决方案】对excel工作表进行排序

经验分享
小曼
2024-06-18 19:45·浏览量:1086
小曼
发布于 2024-06-17 13:44更新于 2024-06-18 19:451086浏览

背景:

某工作簿中的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'])


收藏2
全部评论1
最新
发布评论
评论