导入的ExcelUtil包:Python的openpyxl封装实现读取表格数据 openpyxl读取表格数据
#!/usr/bin/env python
# coding=utf-8
# 先获取用户想要处理的表格名字,返回文件的全路径地址
import os
from process_excel import ExcelUtil
class Get_file(object):
def __init__(self):
self.path = os.path.dirname(os.getcwd())
# 获取当前目录下所有文件
dirlist = os.listdir(self.path)
print(self.path)
# 存放所有xlsx格式表格
self.excel_list = []
#列表里面是字典,每一组字典就是表格序号和表格名字[{},{}]
self.company_list = []
for i in dirlist:
if os.path.splitext(i)[1] == '.xlsx':
self.excel_list.append(i)
def company_info(self):
# 有表格的情况
if len(self.excel_list) > 0:
print("目录下共有以下符合要求的表格:")
print("*" * 54)
for j in range(len(self.excel_list)):
excel_dic = {}
excel_dic[j+1] = self.excel_list[j]
self.company_list.append(excel_dic)
print(excel_dic)
print("*" * 54)
while True:
key_company = input("请输入要上传的表格名称关键字:")
key_list = []
value_list = []
if key_company != "":
for company_dic in (self.company_list):
# company_dic是一个表格信息字典
for value_company in company_dic.values():
if key_company in value_company:
for key, value in company_dic.items():
# 保存key值
key_list.append(key)
# 保存value值
value_list.append(value)
if len(key_list) != 0 :
print("====================共%s条相关表格信息==================" % (len(key_list)))
print("{:^10}\t{:^23}".format("表格序号", "表格名称"))
for i in range(len(key_list)):
print("{:^10}\t{:^23}".format(key_list[i], value_list[i]))
# 判断开关,如果有表格信息,才会去提示用户输入序号
switch = True
break
else:
print("ERROR:未找到相关的表格信息,请重试!")
# 防止只输入回车键
else:
print("ERROR:输入有误,请重试!")
print("=" * 54)
while True:
if switch:
try:
ID_key = int(input("请输入相应表格一模一样的序号:"))
# 防止用户输入回车
if ID_key != "":
if ID_key in key_list:
num = key_list.index(ID_key)
print("即将上传文件:%s"%(value_list[num]))
# print(self.path + "/" + value_list[num])
file_Path = self.path + "/" + value_list[num]
data = ExcelUtil(file_Path).judge_excel()
if data[0]['判断值'] == "":
data = self.process_data(file_Path)
# Get_file().company_info()
return (self.path + "/" + value_list[num],data)
else:
print("ERROR:您输入的序号不在以上信息中,请重试!")
else:
print("ERROR:输入有误,请重试!")
except:
print("ERROR:输入有误,请重试!")
else:
print("目录下未找到符合要求的表格,请核实!")
# 执行bat文件防止闪退
input("请按回车键继续...")
def process_data(self,file_Path):
data = ExcelUtil(file_Path).judge_excel()
return data
# 因为先要写入表格数据所以要执行两遍
class process_data(object):
def __init__(self):
self.path = os.path.dirname(os.getcwd())
# 获取当前目录下所有文件
dirlist = os.listdir(self.path)
print(self.path)
# 存放所有xlsx格式表格
self.excel_list = []
#列表里面是字典,每一组字典就是表格序号和表格名字[{},{}]
self.company_list = []
for i in dirlist:
if os.path.splitext(i)[1] == '.xlsx':
self.excel_list.append(i)
def company_info(self):
# 有表格的情况
if len(self.excel_list) > 0:
print("目录下共有以下符合要求的表格:")
print("*" * 54)
for j in range(len(self.excel_list)):
excel_dic = {}
excel_dic[j+1] = self.excel_list[j]
self.company_list.append(excel_dic)
print(excel_dic)
print("*" * 54)
while True:
key_company = input("请输入要上传的表格名称关键字:")
key_list = []
value_list = []
if key_company != "":
for company_dic in (self.company_list):
# company_dic是一个表格信息字典
for value_company in company_dic.values():
if key_company in value_company:
for key, value in company_dic.items():
# 保存key值
key_list.append(key)
# 保存value值
value_list.append(value)
if len(key_list) != 0 :
print("====================共%s条相关表格信息==================" % (len(key_list)))
print("{:^10}\t{:^23}".format("表格序号", "表格名称"))
for i in range(len(key_list)):
print("{:^10}\t{:^23}".format(key_list[i], value_list[i]))
# 判断开关,如果有表格信息,才会去提示用户输入序号
switch = True
break
else:
print("ERROR:未找到相关的表格信息,请重试!")
# 防止只输入回车键
else:
print("ERROR:输入有误,请重试!")
print("=" * 54)
while True:
if switch:
try:
ID_key = int(input("请输入相应表格一模一样的序号:"))
# 防止用户输入回车
if ID_key != "":
if ID_key in key_list:
num = key_list.index(ID_key)
print("即将上传文件:%s"%(value_list[num]))
# print(self.path + "/" + value_list[num])
file_Path = self.path + "/" + value_list[num]
data = ExcelUtil(file_Path).judge_excel()
if data[0]['判断值'] == "":
Get_file().company_info()
return (self.path + "/" + value_list[num],data)
else:
print("ERROR:您输入的序号不在以上信息中,请重试!")
else:
print("ERROR:输入有误,请重试!")
except:
print("ERROR:输入有误,请重试!")
else:
print("目录下未找到符合要求的表格,请核实!")
# 执行bat文件防止闪退
input("请按回车键退出...")
os._exit(0)
if __name__ =="__main__":
get_file = Get_file()
get_file.company_info()
使用:
from get_file import Get_file
# 先调取:获取用户想要处理的表格名字,返回文件的全路径地址方法
filePath,data = Get_file().company_info()
company_list = []
if filePath:
for i in range(len(data)):
company_list.append(data[i]['商家名称'])