python根据excel内容生成文件夹
工作需要根据excel数据信息,生成对应的文件夹,用python写了一个脚本处理了一下。 样例中表格内容也进行了调整。
- 环境:
- windows10
- python3.7 + openpyxl
- 目标:
以list.xlsx数据为准,抽取指定sheet页中的指定字段信息,生成目录, 并在目录中创建固定的子目录.
-
表格格式:
- 表格sheet-A01
序号 项目名称 备注 1 项目1 张三 2 项目2 李四 - 表格sheet-A02
序号 项目名称 备注 1 项目1 王五 每一个sheet存放一个批次的任务信息, total为批次名称
-
代码:
from openpyxl import load_workbook
from openpyxl import Workbook
import os
import re
## 获取项目清单列表
wb = load_workbook( filename = '.\\test\\list.xlsx')
#ws_in = wb_in.active
outpath=".\\out\\"
## 名字列表开始结束行号
start_index = 4
##end_index =
## 目录编号
dir_no = 1
## 1. 找到指定的sheet页面
sheets_name = ['A01', 'A02']
## 3. 组成符合要求的目录字符串创建目录
def mkdir(path):
try:
os.makedirs(path)
print("CREATE")
except FileExistsError:
print("EXIST, NO CREATE")
# Get all dirs
def mksubdir(path):
try:
dirnames = [name for name in os.listdir('.\\model')
if os.path.isdir(os.path.join('.\\model', name))]
for i in dirnames:
mkdir(path+"\\"+i)
except :
print(" CREATE SUB DIR ERROR ")
for i in range(len(sheets_name)):
print(i)
sheet = wb[sheets_name[i]]
print(sheet)
## 2. 找到相关的任务信息
for row in range(start_index, sheet.max_row+1):
## 1. 判断内容是否空格 0 or 1?
if (str(sheet.cell(row, column=1).value).strip() == "None" ):
print(batch_no + " is over")
break;
##2. 获取表格内容生成目录
task_no = sheet.cell(row, column=1).value
batch_no = sheet.title.split('-')[0]
task_context = str(sheet.cell(row, column=2).value).strip()
task_manager = re.search(r'张三|李四|王五', sheet.cell(row,column=3).value)
task_leader = task_manager.group(0)
#(序号
)-批次号
-批次序号
-任务名称
(负责人
)
# mkdir(path)
dir_no_str = format(dir_no, '02d')
task_no_str = format(task_no, '02d')
dirname=dir_no_str+"-"+batch_no+"-"+task_no_str+"-"+task_context+"-"+task_leader
mkdir(outpath+dirname)
# mksubdir(path)
mksubdir(outpath+dirname)
dir_no = dir_no+1
- 运行结果
├─01-A01-01-项目1-张三
│ ├─01_文档目录1
│ └─02_文档目录2
├─02-A01-02-项目2-李四
│ ├─01_文档目录1
│ └─02_文档目录2
└─03-A02-01-项目3-王五
├─01_文档目录1
└─02_文档目录2
Be First to Comment