Check the Excel file if it contains illustrations

1. Double-click the implementation of the program and enter the directory you want to check (includes all subdirectories under xlsx, xls)
Check the Excel file if it contains illustrations

2. Check if excel in the illustrations, the program output file seekfile_result.txt, illustrations and displays the position where the document sheet table and the location of FIG.
Check the Excel file if it contains illustrations

import os
import win32com.client
import xlrd

def run_fast_scandir(dir, key1, key2): # dir: str, ext: list 搜索文件
subfolders, files = [], []
for f in os.scandir(dir):
if f.is_dir():
subfolders.append(f.path)
if f.is_file():
if key1.lower() in f.name.lower() or key2.lower() in f.name.lower():
files.append(f.path)

for dir in list(subfolders):
    sf, f = run_fast_scandir(dir, key1, key2)
    subfolders.extend(sf)
    files.extend(f)
return subfolders, files

def get_xls_sheets (xlsfile): sheet table # obtain files
XLS = xlrd.open_workbook (xlsfile, ON_DEMAND = True)
return xls.sheet_names ()

def check_pic(xlsfile, sheet): #检查Sheet中是否有图
x = win32com.client.Dispatch("Excel.Application")
wb = x.Workbooks.Open(xlsfile)
ws = wb.Sheets(sheet)
for k in ws.Shapes:
result_file.writelines(xlsfile + " "+sheet+" ")
result_file.writelines(k.TopLeftCell.Address + "\n")
wb = x.WorkBooks.Close()

if name == "main":
seek_path = input("Input search path (like: d:\test):")
subfolders,files = run_fast_scandir(seek_path, "xlsx", "xls") #"xlsx","xls"为要查询的扩展名
i = -1
result_file = open("seekfile_result.txt", "a+")
for f in files:
i += 1
xls_sheets = get_xls_sheets(files[i])
for xls_sheet in xls_sheets:
check_pic(files[i], xls_sheet)
result_file.close()

Guess you like

Origin blog.51cto.com/sting/2476085