
根据以上表格格式在本地创建对应文件夹
"""
根据 Excel 表格的列位置层级,自动创建对应的文件夹结构
适用于:每一列代表一个层级的表格
"""
import os
import openpyxl
def clean_name(name):
"""清洗文件夹名称"""
if name is None or str(name).strip().upper() == 'N/A':
return None
name = str(name).strip()
if not name:
return None
# Windows 不支持的字符替换
for ch in ['/', '\\', ':', '*', '?', '"', '<', '>', '|']:
name = name.replace(ch, '_')
return name
def main():
# ===== 配置区域(根据你的实际情况修改) =====
xlsx_filename = '11.xlsx' # Excel 文件名
sheet_name = 'Sheet1' # 工作表名称
output_dir = './output_folders' # 输出根目录
# ==========================================
script_dir = os.path.dirname(os.path.abspath(__file__))
xlsx_path = os.path.join(script_dir, xlsx_filename)
if not os.path.exists(xlsx_path):
print(f"x 找不到文件: {xlsx_path}")
return
wb = openpyxl.load_workbook(xlsx_path)
ws = wb[sheet_name]
stack = [] # 记录每列当前的有效文件夹名
created_dirs = []
for row in ws.iter_rows(min_row=1, max_row=ws.max_row, max_col=ws.max_column):
for col_idx, cell in enumerate(row):
folder_name = clean_name(cell.value)
if folder_name is None:
continue
# 维护栈的深度 = 当前列索引
if len(stack) > col_idx:
stack = stack[:col_idx]
stack.append(folder_name)
else:
stack.append(folder_name)
# 构建完整路径
full_path = os.path.join(output_dir, *stack)
os.makedirs(full_path, exist_ok=True)
created_dirs.append(full_path)
indent_str = ' ' * col_idx
print(f"{indent_str} {folder_name}")
print(f"\n 完成!共创建 {len(created_dirs)} 个文件夹")
print(f" 输出目录: {os.path.abspath(output_dir)}")
if __name__ == '__main__':
main()
如果没有openpyxl库文件需要下载
pip install openpyxl
改进版
"""
根据 Excel 表格的列位置层级,自动创建对应的文件夹结构
适用于:每一列代表一个层级的表格
"""
import os
import openpyxl
def clean_name(name):
"""清洗文件夹名称"""
if name is None or str(name).strip().upper() == 'N/A':
return None
name = str(name).strip()
if not name:
return None
# Windows 不支持的字符替换
for ch in ['/', '\\', ':', '*', '?', '"', '<', '>', '|']:
name = name.replace(ch, '_')
return name
def main():
# ===== 配置区域(根据你的实际情况修改) =====
xlsx_filename = '22.xlsx' # Excel 文件名
output_dir = './output_folders' # 输出根目录
# ==========================================
script_dir = os.path.dirname(os.path.abspath(__file__))
xlsx_path = os.path.join(script_dir, xlsx_filename)
if not os.path.exists(xlsx_path):
print(f"x 找不到文件: {xlsx_path}")
return
wb = openpyxl.load_workbook(xlsx_path)
# ========== 自动获取工作表 ==========
print(" 工作表列表:")
for i, name in enumerate(wb.sheetnames, 1):
print(f" [{i}] '{name}'")
ws = wb[wb.sheetnames[0]]
print(f" 当前使用工作表: '{wb.sheetnames[0]}'")
# ===================================
stack = [] # 记录每列当前的有效文件夹名
created_dirs = []
for row in ws.iter_rows(min_row=1, max_row=ws.max_row, max_col=ws.max_column):
for col_idx, cell in enumerate(row):
folder_name = clean_name(cell.value)
if folder_name is None:
continue
# 维护栈的深度 = 当前列索引
if len(stack) > col_idx:
stack = stack[:col_idx]
stack.append(folder_name)
else:
stack.append(folder_name)
# 构建完整路径
full_path = os.path.join(output_dir, *stack)
os.makedirs(full_path, exist_ok=True)
created_dirs.append(full_path)
indent_str = ' ' * col_idx
print(f"{indent_str} {folder_name}")
print(f"\n 完成!共创建 {len(created_dirs)} 个文件夹")
print(f" 输出目录: {os.path.abspath(output_dir)}")
if __name__ == '__main__':
main()
测试文件下载:点击下载