单例模式 jaxb sms handlebarsjs flink教程视频 git视频 mysql倒序 oracle限制查询条数 matlab求矩阵最大值 javaweb是前端还是后端 Navicat 数据库查询 python如何实现多线程 python在线教程 python对象 python做界面 python中文教程 java语法基础 randomjava java创建集合 java中instanceof java字符串匹配 qtp下载 图片链接生成器 免费书籍 winhex教程 ps色阶快捷键 管理文件 视频md5修改器 php正则匹配 facetime要钱吗 剑灵龙骨卷轴 黑道圣徒4去马赛克 ocr文字识别软件免费下载 华为杂志锁屏怎么设置 淘新闻下载 网易云听歌识曲电脑版 debian安装教程 ipad清理内存 python编译
当前位置: 首页 > 学习教程  > 编程语言

创建包含文件夹下所有文件及文件夹的excel表格,且对应文件夹及文件有超链接

2020/11/4 14:48:23 文章标签:

实现思路 实现对文件的遍历将所有文件在表格中以文件树样式展现实现文件/文件夹的超链接 代码实现 import os import openpyxl from openpyxl import Workbook from openpyxl.styles import Font, Colordef get_filename(dirname):column0 dirname.count(\\)#创建工作簿 …

实现思路

  1. 实现对文件的遍历
  2. 将所有文件在表格中以文件树样式展现
  3. 实现文件/文件夹的超链接

代码实现

import os
import openpyxl
from openpyxl import Workbook
from openpyxl.styles import Font, Color

def get_filename(dirname):
    
    column0 = dirname.count('\\')
    #创建工作簿    
    wb = Workbook()
    
    #创建sheet
    sheet1 = wb.create_sheet(title="Data")
      
    row = 1
    #循环获取根目录,根目录下的文件及文件夹
    for roots, dirs, files in os.walk(dirname):
        #print(roots)
        #计算不同层级文件的列数
        column = roots.count('\\')
        column = column - column0+1
        
        #获取文件夹名
        
        root_name = roots.split('\\')[-1]
        #生成文件夹的超链接
        rowB = '=hyperlink("' + roots  + '","' + root_name + '")'
        sheet1.cell(row=row,column=column).value=rowB
        #设置单元格的颜色
        ft = Font( color='FF0000')
        sheet1.cell(row=row,column=column).font = ft

        column = column + 1
        for file in files:
            #获取文件并将其设定为超链接
            if file[0] != '.' and '~'not in file:
                #print(file)
                row = row + 1
                rowB = '=hyperlink("' + roots + '\\' + file + '","' + file + '")'
                sheet1.cell(row=row,column = column).value=rowB
                
        row =row+1
        
     #删除创建工作簿自动生成的sheet
     #若要使用改sheet
     #可以通过以下实现
     #sheet1 =  wb.active 
     #sheet1.title = "自动生成的sheet"
    del wb['Sheet']   
    wb.save("get_file.xlsx")         


if __name__ == '__main__':
   #将文件夹路径作为参数传入
    get_filename(r'D:\0000数据库\11个人资料及作业\嵌入式\嵌入式系统课程设计')

实现效果

该代码实现后生成的excel 红色为文件夹 黑色为该文件夹下的文件

代码解读

  • os.walk(top, topdown=True, οnerrοr=None, followlinks=False)
    通过该函数可以得到一个三元tupple(dirpath, dirnames, filenames), 第一个为起始路径,第二个为起始路径下的文件夹,第三个是起始路径下的文件。dirpath 是一个string,代表目录的路径,dirnames 是一个list,包含了dirpath下所有子目录的名字。filenames 是一个list,包含了非目录文件的名字。
import os
import openpyxl
from openpyxl import Workbook
from openpyxl.styles import Font, Color
def get_filename(dirname):
    
    for roots, dirs, files in os.walk(dirname):
        print(roots)
        print(dirs)
        print(files)
        print('\n')

if __name__ == '__main__':
   
    get_filename(r'D:\0000数据库\11个人资料及作业\嵌入式\嵌入式系统课程设计')

程序运行结果(部分)

D:\0000数据库\11个人资料及作业\嵌入式\嵌入式系统课程设计
['boa', 'web控制例程']
['BOA-流程分析.pdf', 'boa的移植和cgi编译过程.doc', '~$a的移植和cgi编译过程.doc', '~$式系统课程设计要求.doc', '嵌入式系统课程设计要求.doc']


D:\0000数据库\11个人资料及作业\嵌入式\嵌入式系统课程设计\boa
['contrib', 'docs', 'examples', 'extras', 'src']
['boa.conf', 'ChangeLog', 'CREDITS', 'Gnu_License', 'mime.types', 'README']


D:\0000数据库\11个人资料及作

结论
由此可见,每次循环获取的roots的数据格式为string 是根目录 dirs为roots下的文件夹,files为roots下的文件

  • openpyxl.Workbook()的相关操作

工作簿

创建工作簿:wb = Workbook()
保存工作簿:wb.save("FileTrace.xlsx")

sheet

自动生成的sheet: ws = wb.active
为sheet命名:ws.title = "worksheettitle"
创建新的sheet:sheet1 = wb.create_sheet(title="Data")
删除sheet:del wb['Sheet']

单元格

为单元格赋值:sheet1.cell(row=row,column=column).value=roots
             ws["A1"] = "HOGE"
             rows = [
				["张三", "男", "8k"],
				["李四", "女", "9k"],
				["刘能", "男", "10k"],]
 for row in rows:
 ws.append(row)
设置单元格文字颜色:ft = Font( color='FF0000')
                  ws.cell(row=row,column=column).font = ft
为单元格设定超链接: rowB = '=hyperlink("' + roots + '\\' + file + '","' + file + '")'  
                  sheet1.cell(row=row,column = column).value=rowB

本文链接: http://www.dtmao.cc/news_show_350213.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?