|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 chunchun2017 于 2020-4-6 11:50 编辑
工作中,有一个需求,就是要将指定目录及子目录下的所有.txt文件路径找出来,写入excel表中,并且需要在excel表中设置超链接的形式,这样点击超链接,就可以打开文件了
编写代码如下:
- import os
- import xlwt
- import openpyxl
- import time
- def search_file(start_dir, target) :
- os.chdir(start_dir)
-
- for each_file in os.listdir(os.curdir) :
- ext = os.path.splitext(each_file)[1]
- file_name = os.path.splitext(each_file)[0]
- if ext in target :
- file_dict[file_name] = os.getcwd() + os.sep + each_file + os.linesep # 使用os.sep是程序更标准
- if os.path.isdir(each_file) :
- search_file(each_file, target) # 递归调用
- os.chdir(os.pardir) # 递归调用后切记返回上一层目录
- #start_dir = input('请输入待查找的初始目录:')
- start_dir = 'D:\python代码'
- #orig_dir = os.getcwd()
- target = ['.txt']
- file_dict = {}
- #写入excel表
- line = 1
- row = 0
- workbook = xlwt.Workbook()
- sheet = workbook.add_sheet('文件清单',cell_overwrite_ok=True)
- search_file(start_dir, target)
- #设置excel表第一行标题格式
- style = xlwt.XFStyle()
- fnt = xlwt.Font()
- fnt.bold = True
- style.font = fnt
- sheet.write(0,0,'文件名',style)
- sheet.write(0,1,'链接',style)
- #从第1行开始,向excel表中写入文件名及其路径
- for each in file_dict.keys():
- sheet.write(line,0,each)
- sheet.write(line,1,file_dict[each])
- line+=1
- #保存excel文件
- timest = '文件台账'+str(time.localtime().tm_min)+str(time.localtime().tm_sec)+'.xls'
- workbook.save(timest)
复制代码
以上代码运行结果如下:
发现点击B列的单元格,无法自动跳转打开对应的文件
因为B列中的内容,只是一个文件绝对路径,而不是一个指向文件位置的超链接
请教各位大神,需要怎样修改代码,才能让B列中写入指向文件的超链接?
使用xlsxwriter库
- import os
- import xlwt
- import openpyxl
- import time
- import xlsxwriter #使用这个库创建excel
- def search_file(start_dir, target) :
- os.chdir(start_dir)
-
- for each_file in os.listdir(os.curdir) :
- ext = os.path.splitext(each_file)[1]
- file_name = os.path.splitext(each_file)[0]
- if ext in target :
- file_dict[file_name] = os.getcwd() + os.sep + each_file + os.linesep # 使用os.sep是程序更标准
- if os.path.isdir(each_file) :
- search_file(each_file, target) # 递归调用
- os.chdir(os.pardir) # 递归调用后切记返回上一层目录
- #start_dir = input('请输入待查找的初始目录:')
- start_dir = 'D:\python代码'
- #orig_dir = os.getcwd()
- target = ['.txt']
- file_dict = {}
- #写入excel表
- line = 1
- row = 0
- timest = '文件台账'+str(time.localtime().tm_min)+str(time.localtime().tm_sec)+'.xlsx'
- workbook = xlsxwriter.Workbook(timest)
- worksheet = workbook.add_worksheet('文件清单')
- #设置第一列第二列的宽度
- worksheet.set_column('A:A', 20)
- worksheet.set_column('B:B', 50)
- search_file(start_dir, target)
- #设置excel表第一行标题格式
- style = workbook.add_format({'bold': True}) #加粗
- worksheet.write(0,0,'文件名',style)
- worksheet.write_url(0,1,'链接',style)
- #从第1行开始,向excel表中写入文件名及其路径
- for each in file_dict.keys():
- worksheet.write(line,0,each)
- worksheet.write_url(line,1,file_dict[each].strip())
- line+=1
- workbook.close()
复制代码
|
-
|