@一路向北@ 发表于 2022-2-22 22:13:07

用python实现Excel工作表目录功能

# 先挖个坑以后慢慢填,其实已经有大神用AutoHotkey帮我写了个脚本,用起来比表格自带目录还方便,这个纯属尝试

# ++++++++++++++++++++++++++

# 为指定的工作簿添加工作表目录

import xlwings as xw

filepath = input('请输入:工作簿的完整路径\n')

# 打开指定位置的工作簿
wb = xw.Book(filepath)

# 添加目录
shtList = [] #空数组,用于存储工作簿所有工作表名称

# 将工作簿所有工作表名称存储在shtList数组
for shtNum in range(len(wb.sheets)):
    shtList.append(str(wb.sheets.name))

def directoryUpdate():
    for shtNum in range(len(wb.sheets) - 1): # 将工作簿所有工作表名称写入在“目录”工作表A列,由于上行代码添加一个新的工作表,导致工作表数量比原有数量多1,循环时需要减1才能确保shtList数组正确读取
      # wb.sheets['目录'].range('A' + str(shtNum + 1)).value = shtList
      wb.sheets['目录'].range('A' + str(shtNum + 1)).add_hyperlink(str('#' + shtList + '!A1'),shtList,shtList)

if '目录' in shtList: # 判断工作簿是否含有名称为“目录”的工作表
    if (input('是否更新目录,请输入:(是/否)\n') == '是'):
      wb.sheets['目录'].activate() # 焦点设为名称为“目录”的工作表 / 激活名称为“目录”的工作表为当前工作表
      directoryUpdate()
    else:
      pass # 已含有名称为“目录”的工作表,并不执行任何操作
else: # 未含有名称为“目录”的工作表
    wb.sheets.activate() # 焦点设为第一个工作表 / 激活第一个工作表为当前工作表
    wb.sheets.add('目录') # (默认在当前工作表前)添加名称为“目录”的工作表
    directoryUpdate()

# 另存为工作簿到指定位置,需要输入另存为的工作簿名称
wb.save(input('请输入:工作簿另存为的完整路径\n'))

# 关闭工作簿
wb.close()

# ————————————————————

# 参考:

# xlwings中文文档
# https://www.kancloud.cn/gnefnuy/xlwings-docs/1127450

# python xlwings(一) 获取sheet名及个数
# https://www.lizenghai.com/archives/4212.html

# Python(Python+Qt)学习随笔:使用xlwings新建Execl文件和sheet的方法
# https://www.cnblogs.com/LaoYuanPython/p/11931587.html

# python实现判断数组是否包含指定元素的方法
# https://www.jb51.net/article/69500.htm

# python用xlwt,超链接到另一sheet,如何设置HYPERLINK
# https://zhidao.baidu.com/question/500538554557937364.html
页: [1]
查看完整版本: 用python实现Excel工作表目录功能