鱼C论坛

 找回密码
 立即注册
查看: 2252|回复: 0

[学习笔记] 用python实现Excel工作表目录功能

[复制链接]
发表于 2022-2-22 22:13:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
# 先挖个坑以后慢慢填,其实已经有大神用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[shtNum].name))

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

if '目录' in shtList: # 判断工作簿是否含有名称为“目录”的工作表
    if (input('是否更新目录,请输入:(是/否)\n') == '是'):
        wb.sheets['目录'].activate() # 焦点设为名称为“目录”的工作表 / 激活名称为“目录”的工作表为当前工作表
        directoryUpdate()
    else:
        pass # 已含有名称为“目录”的工作表,并不执行任何操作
else: # 未含有名称为“目录”的工作表
    wb.sheets[0].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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-28 18:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表