生成带超链的Excel文件目录

目的很简单,就是遍历文件夹得到目录树,可以不需要再双击文件夹,一个一个的去找文件再双击打开,将无数次的无效点击,变成一次单击便能查看想要查看的文件。

当然了,遍历文件夹是基础操作,批量操作必定要一个一个的来,但是我们在工作中可能也只是需要辅助一下,让我们可以简单地只去动动脑子,而不用枯燥的重复。

那么首先,问,手工怎么遍历?

打开文件夹,看看里面有啥,文件的话,写到树上,文件夹的话,写到树上,接着往里面打开,直到没有可以打开的东西。

可以看出,这是一个枯燥而且无聊的操作,如果文件夹多了,还可能会漏。非常适合用Python这种脚本语言来解决。

根据以上便可得到一个框架

import os, os.path

def get_dir_list(path):
    # 看看哪些是文件夹哪些是文件
    folder_list = [folder for folder in os.listdir(path) if os.path.isdir(os.path.join(path, folder))] # 全部子文件夹名称
    file_list = [file for file in os.listdir(path) if os.path.isfile(os.path.join(path, file))] # 全部子文件名称
    for folder in folder_list:
        print(folder) # 写文件夹名
        get_dir_list(os.path.join(path, folder))  # 内层文件夹进深一层,并搜索
    for file in file_list:
        print(file) # 写文件名

if __name__ == '__main__':

    main_path = "C:\\test"
    # 打开文件夹
    get_dir_list(main_path)

运行完可以看出,结果非常简单,甚至都看不出哪个是文件哪个是文件夹。

因此内层文件名需要缩进。如下

TAB = '    '
def get_dir_list(path, placeholder=''):
  ...
    for folder in folder_list:
        print(placeholder + folder) # 写文件夹名
        get_dir_list(os.path.join(path, folder), placeholder + TAB)  # 内层文件夹进深一层,并搜索
    for file in file_list: 
        print(placeholder + file) # 写文件名

当然了,生成的目录树还可以更好看一些,这里不再单独列出。

得到目录树之后呢,最好是直接保存到txt文本文档里面,为了好看,每个块的最后一行单独做个拐角,如下

import os, os.path

BRANCH = '├─'
LAST_BRANCH = '└─'
TAB = '│  '
EMPTY_TAB = '   '

def get_dir_list(path, placeholder=''):
    # 看看哪些是文件夹哪些是文件
    folder_list = [folder for folder in os.listdir(path) if os.path.isdir(os.path.join(path, folder))] # 全部子文件夹名称
    file_list = [file for file in os.listdir(path) if os.path.isfile(os.path.join(path, file))] # 全部子文件名称
    for folder in folder_list:
        if folder != folder_list[-1]:
            txt_index.write(placeholder + BRANCH + folder + '\n')  
        else:
            txt_index.write(placeholder + (BRANCH if file_list else LAST_BRANCH) + folder + '\n')
        get_dir_list(os.path.join(path, folder), placeholder + TAB)  # 内层文件夹进深一层,并搜索
    for file in file_list: 
        if file != file_list[-1]:
            txt_index.write(placeholder + BRANCH + file + '\n')
        else:
            txt_index.write(placeholder + LAST_BRANCH + file_list[-1] + '\n')

if __name__ == '__main__':

    main_path = "C:\\test"
    # 打开文件夹
    with open('目录.txt','w') as txt_index:
        txt_index.write(fold_path+"\n")
        get_dir_list(main_path)
    txt_index.close()

最后,我们当然不能只满足于看看,还想点了目录直接打开文件,那就不能用.txt来存储了,需要请出Excel。

这里,我使用的是 xlwt ,使用 win+r进入DOS界面,键入pip install xlwt 即可。

在这个小应用中,所需要的,不过是需要在单元格中写上超链接的公式而已,

但是这个路径有两种用法,

第一种是用相对路径打开超链里的文件,比如   "test\\*txt"  ,excel表格本身必须在主目录下面;

第二种是用绝对路径打开文件,比如   "C:\\test\\*txt",如果文件放到了其他电脑上,文件夹也得在 "C:\\" 路径下。

格式如下:

link ='HYPERLINK("%s";"%s")'%(folder_path,folder)
sheet_index.write(line, placeholder.count(TAB), xlwt.Formula(link))
line = line + 1

在程序中加入此部分,可以完成本次的简单应用。以下代码,完成了绝对路径与相对路径两种目录的生成,还加入了跳过、删除空白文件夹以及错过部分特定后缀文件的功能:

import os, os.path, xlwt

BRANCH = '├─'
LAST_BRANCH = '└─'
TAB = '│  '
EMPTY_TAB = '   '

global line

# 遍历当前文件夹下的子文件夹和文件
def get_dir_list(path, placeholder=''):
    global line
    folder_list = [folder for folder in os.listdir(path) if os.path.isdir(os.path.join(path, folder))] # 全部子文件夹名称
    file_list = [file for file in os.listdir(path) if os.path.isfile(os.path.join(path, file))] # 全部子文件名称
    for folder in folder_list:
        folder_path = os.path.join(path, folder)
        if list(os.listdir(folder_path)):
            # 文件夹名 写入文本文档,并添加缩进
            if folder != folder_list[-1]:
                txt_index.write(placeholder + BRANCH + folder + '\n')  
            else:
                txt_index.write(placeholder + (BRANCH if file_list else LAST_BRANCH) + folder + '\n')
            # 写入Excel并增加超链接
            link = 'HYPERLINK("%s";"%s")'%(folder_path.replace(main_path+"\\",""),folder)  # 相对路径
            sheet_index.write(line, placeholder.count(TAB), xlwt.Formula(link))
            link = 'HYPERLINK("%s";"%s")'%(folder_path,folder)  # 绝对路径
            sheet_index2.write(line, placeholder.count(TAB), xlwt.Formula(link))
            line = line + 1
            get_dir_list(folder_path, placeholder + TAB)  # 内层文件夹进深一层,并搜索
        else:
            os.rmdir(folder_path) # 删除空文件夹

    for file in file_list:
        if str.upper(os.path.splitext(file)[-1]) not in [".TIF", ".PNG","JPG"]:
            file = file.replace("‑","")
            # 文件名 写入文本文档,并添加缩进
            try:
                if file != file_list[-1]:
                    txt_index.write(placeholder + BRANCH + file + '\n')
                else:
                    txt_index.write(placeholder + LAST_BRANCH + file_list[-1] + '\n') 
            except UnicodeEncodeError:
                txt_index.write(placeholder + BRANCH + "特殊字符,无法写入txt文件!!!" + '\n')
                    print("这个文件名里有特殊字符:"+ file)
            link ='HYPERLINK("%s";"%s")'%(os.path.join(path, file).replace(main_path+"\\",""),file) 
            sheet_index.write(line, placeholder.count(TAB), xlwt.Formula(link))
            link = 'HYPERLINK("%s";"%s")'%(os.path.join(path, file),file)
            sheet_index2.write(line, placeholder.count(TAB), xlwt.Formula(link))
            line = line + 1
 
if __name__ == '__main__':

    line = 0
    book = xlwt.Workbook()
    main_path = "C:\\test"
    sheet_index = book.add_sheet('相对路径')  # 目录必须放置于 main_path 下
    sheet_index2 = book.add_sheet('绝对路径') # 不同电脑上 main_path 得相同
    with open(main_path+"\\"+'目录.txt','w') as txt_index:
        txt_index.write(main_path+"\n")
        get_dir_list(main_path)
    txt_index.close()
    book.save(main_path+"\\"+'目录.xls')
    print("完成了!")

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Excel 2013中,我们可以使用一些功能来自动生成一个包含文件目录以及文件链接的Excel文件。 首先,我们可以使用"文件"选项卡中的"打开"命令来打开我们需要生成文件目录的文件夹。然后通过按住Ctrl键,选择需要包含的文件,点击"确定"按钮来完成选择。 接下来,我们需要创建一个新的Excel文件来生成目录。在新Excel文件的第一个工作表中,我们可以使用"数据"选项卡中的"从文本"命令来导入我们选择的文件。在"从文本"对话框中,选择"分隔符"选项,然后点击"下一步"按钮。 在下一个对话框中,我们可以选择要用作分隔符的字符。通常,选择制表符或逗号作为分隔符较佳,这是因为在我们选择的文件中,文件名和文件路径之间很可能会用这些字符进行分隔。选择完毕后,点击"下一步"按钮。 在下一个对话框中,我们可以为导入的数据选择相应的格式。选择完毕后,点击"完成"按钮,Excel将会将所选文件的目录以及文件路径导入到新Excel文件中。 接下来,我们可以对新Excel文件中的目录进行格式化和编辑,以使其更易读和易于导航。我们可以添加标题,设置字体样式和大小,合并单元格,增加边框等等。此外,我们还可以插入超链接来实现文件链接功能。 为了在目录中添加文件链接,我们可以从文件夹中复制文件的路径,然后在目录中使用超链接函数来创建文件链接。具体步骤是:在目录中选择一个单元格,点击"插入"选项卡中的"超链接"按钮,粘贴文件路径到"链接位置"文本框,点击"确定"按钮即可创建文件链接。 通过上述步骤和功能,我们可以轻松地在Excel 2013中生成一个包含文件目录和文件链接的Excel文件。这使得我们能够快速访问和导航文件夹中的文件,并提高工作效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值