1. Double-click the implementation of the program and enter the directory you want to check (includes all subdirectories under xlsx, xls)
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.
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()