功能描述看代码的帮助信息。操作步骤。
1.读取某个文件夹的所有文件夹下的文件名。
2.通过openpyxl来操作Excel。
3.将文件夹的文件名集合以超链接的方式写入Excel文件。
# 推荐使用pandas,使用pandas方法可以不用在excel上点击
import pandas as pd
import os
import openpyxl as op
def getfilename(filename):
'''
此函数完成获取文件夹名称
os.walk() 方法用于通过在目录树中游走输出在目录中的文件名,向上或者向下。
:param filename:
:return:
'''
for root, dirs, files in os.walk(filename):
# print(filename)
# print(type(root))
# print(type(dirs))
# print(type(files))
array = dirs
# print(f"getfilename files::{files}")
# print(f"getfilename dirs::{dirs}")
# print(f"getfilename array::{array}")
if array:
return array
# 获取当前路径
def get_img_file(file_dir):
imagelist = []
for parent, dirnames, filenames in os.walk(file_dir):
for filename in filenames: # 判断文件是否是图片形式,这里的后缀名都是默认小写字母形式,如有大写字母,添加上去即可
if filename.endswith(('.bmp', '.dib', '.png', '.jpg', '.jpeg', '.pbm', '.pgm', '.ppm', '.tif', '.tiff')):
imagelist.append(os.path.join(parent, filename))
return imagelist
def Hyperlinks(data_list, file_paths):
'''
HYPERLINK 函数针对支持的目标位置创建超链接跳转
:param data_list: 超链接目标位置 :1)Excel 工作簿或工作表中的单元格;2)文档路径;3)互联网网址。
:param file_paths: 超链接[显示文本]
:return:所有超链接集合列表。
'''
str_1 = '=HYPERLINK("'
str_2 = '","'
str_3 = '")'
list_ = []
for i, j in zip(data_list, file_paths):
str4 = "..\\04.规约\\" + j
print(f"str4{str4}")
list_.append(str_1 + str4 + str_2 + str(i) + str_3)
print(f"list_: {list_}")
return list_
def write(num_list):
# num_list = [1, 2, 3, 4, 5, 6]
'''
功能:所有超链接集合列表逐行将写入excel 文件的某列
用到库OpenPYXL,详细了解这个库的功能,可参见https://www.osgeo.cn/openpyxl/index.html#introduction
:param num_list:
:return:
'''
bg = op.load_workbook(r"C:\Users\hp\Desktop\软件\03.使用说明\列表.xlsx") # 应先将excel文件放入到工作目录下
sheet = bg["Sheet1"] # “Sheet1”表示将数据写入到excel文件的sheet1下
for i in range(1, len(num_list) + 1):
sheet.cell(i + 1, 4, num_list[i - 1]) # sheet.cell(1,1,num_list[0])表示将num_list列表的第0个数据1写入
print(num_list[i - 1])
# 到excel表格的第一行第一列
bg.save(r"C:\Users\hp\Desktop\软件\03.使用说明\列表.xlsx") # 对文件进行保存
if __name__ == "__main__":
# 获取文件夹目录列表路径
file_dir = "C:\\Users\hp\\Desktop\\04.规约"
dirlist = getfilename(file_dir) # 获取指定文件夹下的文件夹的名称
# 利用pandas 将Excel表里的数据读出来。
# data = pd.read_excel(r"D:\test.xlsx", engine='openpyxl') # 导入数据
# data_list = data['test'] # 设置需要生成超链接的列
# Hyperlinks 是Excel函数超链接的函数。第一个参数是链接位置,第二个参数是链接名字
test_list = Hyperlinks(dirlist, dirlist)
write(test_list)
print('文件成功生成')