import os
import xlrd
import xlwt
import re
import datetime
#excel 表头数据
table_header=['序号',
'店面名称',
'轮次',
'总分平均分',
'得分率平均分',
'总分',
'总体得分率',
'检查日期',
'进店时间',
'检测时段',
"点餐内容\n收银员\n配餐员",
'总体用餐经验 ',
'C01.餐厅门前地面/台阶清洁无垃圾等杂物',
'C02.餐厅大门玻璃清洁、无水印','C03.招牌灯箱干净、无退色',
'C04.室内空气是否清新无异味、温度适宜',
'C05.有音乐播放、声音适宜、不影响顾客就餐心情',
"C06.柜台内、外顾客可看到的餐具、物品码放整齐;柜台整洁、且是否有与营业无关杂物、资料",
"C07.★前面顾客离开后的托盘和食物/食物包装是否被及时清理",'C08.清洁用品禁止放置在餐区顾客视线内',
'C09.桌椅无破损,且擦拭干净地面瓷砖、楼梯走廊平整无破损',
'C10.★地面干净,无纸屑、水渍/服务员擦地时,是否有“小心地滑”温馨提示牌',
'C11.洗手间无异味',
'C12.洗手间地面、墙面清洁无积水',
'C13.洗手台无水渍、杂物',
'C14.洗手台镜子洁净明亮',
'C15.供应品(烘手机、洗手液)齐全且正常使用',
'C16.餐厅内设施、灯具、桌椅等维护良好,没有损坏',
'C17.餐厅灯片、海报、点餐卡等企划品正确布置,维护良好',
'美观整洁环境得分率',
'S01.★主动对客人热情的表示欢迎、问候、道别 ',
'S02.餐厅所有员工及管理组均面带微笑服务顾客,随时呈现友善服务并满足顾客合理需求',
'S03.在客流量少时,至少有一人在吧台内待岗',
'S04.在没有顾客点餐时,柜台内员工不可以背向顾客站立',
'S05.了解所销售的产品是否均可正常供应,避免造成产品断档退票',
'S06.★是否每份餐点均有至少一次建议性促销',
'S07.熟知所有产品的价格与特点,顾客咨询时均能完整回答',
'S08.点餐准确,小票与所点产品一致',
'S09.重复点餐内容',
"S10.★收找餐费时声音清晰地唱收唱付,并主动提供机打小票",
'S11.零钱准备充足、双手呈递零钱和票据',
'S12.按小票顺序合理配餐,及时且快速配餐',
'S13.不得给客人出错餐或漏出餐',
'S14.出餐时,手指不能接触到食品或顾客直接入口的餐具部位',
'S15.将餐点奉客后回收小票并真诚致谢',
'S16.★工作岗位上的员工/管理组穿着标准且洁净制服上岗,工牌佩戴齐全;精神面貌朝气蓬勃,不懒散懈怠;',
'S17.店内员工及管理组禁止佩戴戒指、耳环(可以佩戴一副较小耳钉)、手链、假指甲等饰物,禁止涂抹指甲油及留长指甲,保证指甲缝内无黑色污垢',
'S18.任何工作人员(包括公司各部门人员、供货商及其他外来人员)进入后厅,必须佩戴一次性拉网帽,出后厅时取下一次性拉网帽',
'S19.头发必须干净整齐(不可有皮屑,出油),长发女员工须将头发束成发髻放入黑色头花内,;男员工不留鬓角,后面头发高于衣领,头发不允许染成过于明显或夸张的颜色',
'S20.不得在顾客面前做出不卫生或其他不雅的动作;店内员工及管理是否有闲聊、打闹现象,在用餐区睡觉、开展娱乐活动、接打私人电话等有损公司品牌形象和影响顾客感受的不恰当言行',
'真诚友善服务得分率',
'Q01.★所有餐牌箱上的产品在规定时间内都能供应(打烊前1小时可执行“美食限时供应”)',
'Q02.奉客餐点正确无误,所提供配套餐具是否齐全',
'Q03.小吃类产品包装、卫生是否干净',
'Q04.正在使用的餐具完整(餐具无破口)且清洁无污垢、水渍',
'Q05.奉客红托盘及垫纸均清洁无油垢及食物残渣等',
'Q06.★出餐标准,美观无遗洒',
'Q07.奉客餐具符合奉客标准',
'Q08.★产品分量符合奉客标准',
'Q09.★主食(米饭/面类)、主菜、汤类温度符合奉客标准',
'Q10.饮品类温度符合奉客标准',
'Q11.其他类产品温度符合奉客标准',
'Q12.★主食(米饭/面类)软硬适中、肉质软硬适中,不油腻、配菜软硬、咸淡适中',
'Q13.饮料、汤类口感纯正(碳酸饮料是否气体充足)',
'Q14.彩虹沙拉、布丁、豆沙汤圆、小吃等口感适中',
'高质稳定产品得分率',
'F01.高峰时段盖饭产品在90秒内出餐,面类产品在150秒内出餐;非高峰期盖饭产品在90秒内出餐,须现做产品应在10分钟之内出餐',
'F02.非高峰期现制产品,服务员能够礼貌地告知顾客具体取餐时间',
'F03.遇到高峰期排队时间延长,当班经理须立即采取果断措施及时安排好相应工作',
'快速迅捷速度得分率',
'I01.售卖的产品(预包装)超过产品保质期,此次直接判定成绩为“0”分',
'I02.售卖的产品(主食、饮品、汤类及小吃)出现变质发酸发霉的情况,最后成绩减“20分”',
'I03.顾客用餐过程中,发现店内工作人员与顾客或工作人员之间出现吵架或打架等,最后成绩减“20分”',
'I04.检查过程中以上表格中未涉及的其他严重问题点',
'闪光点',
'严重问题'
]
#获取当前文件夹下所有文件
d="D:\\爬虫\\10月\\10月\\(原始)\\潘区\\2次\\"
files=[f for f in os.listdir(d)if os.path.isfile( os.path.join(d, f))]
pat='[^(](.*?)[^)]一品三笑'
#获取店面名称
shop_name=[]
for i in range(len(files)):
shop_name.append(re.compile(pat).findall(files[i]))
date=[]
dt=[]
pat1='.*检查表(.*?)-'
for i in range(len(files)):
dt.append(re.compile(pat1).findall(files[i]))
for tm in range(len(dt)):
s="".join(dt[tm])
date.append(datetime.datetime.strptime(s, "%Y%m%d"))
# 创建一个workbook
workbook = xlwt.Workbook()
# 创建一个worksheet
worksheet = workbook.add_sheet('原始数据',cell_overwrite_ok=True)
#设定写入字体样式
style = xlwt.XFStyle() # 初始化样式
font = xlwt.Font() # 为样式创建字体
font.name = 'Times New Roman'
font.bold = False # 黑体
font.underline = False # 下划线
font.italic = False # 斜体字
style.font = font # 设定样式
borders = xlwt.Borders() # Create Borders
borders.left = xlwt.Borders.THIN
#DASHED虚线
#NO_LINE没有
#THIN实线
# May be: NO_LINE, THIN, MEDIUM, DASHED, DOTTED, THICK, DOUBLE, HAIR, MEDIUM_DASHED, THIN_DASH_DOTTED, MEDIUM_DASH_DOTTED, THIN_DASH_DOT_DOTTED, MEDIUM_DASH_DOT_DOTTED, SLANTED_MEDIUM_DASH_DOTTED, or 0x00 through 0x0D.
borders.right = xlwt.Borders.THIN
borders.top = xlwt.Borders.THIN
borders.bottom = xlwt.Borders.THIN
# borders.left_colour = 0x40
# borders.right_colour = 0x40
# borders.top_colour = 0x40
# borders.bottom_colour = 0x40
style.borders = borders # Add Borders to Style
def color_style(i): # 设置单元格背景颜色
style =xlwt. XFStyle()
pattern = xlwt.Pattern() # 创建一个模式
pattern.pattern = xlwt.Pattern.SOLID_PATTERN # 设置其模式为实型
pattern.pattern_fore_colour = i
# 设置单元格背景颜色 0 = Black, 1 = White, 2 = Red, 3 = Green, 4 = Blue, 5 = Yellow, 6 = Magenta, the list goes on...
style.pattern=pattern
style.borders = borders
return style
''' 颜色值
0 = Black, 1 = White, 2 = Red, 3 = Green, 4 = Blue,
5 = Yellow, 6 = Magenta, 7 = Cyan, 16 = Maroon,
17 = Dark Green, 18 = Dark Blue, 19 = Dark Yellow ,
20 = Dark Magenta, 21 = Teal,
22 = Light Gray, 23 = Dark Gray
'''
#设定写入对齐样式
alignment = xlwt.Alignment() # Create Alignment
alignment.horz = xlwt.Alignment.HORZ_CENTER # May be: HORZ_GENERAL, HORZ_LEFT, HORZ_CENTER, HORZ_RIGHT, HORZ_FILLED, HORZ_JUSTIFIED, HORZ_CENTER_ACROSS_SEL, HORZ_DISTRIBUTED
alignment.vert = xlwt.Alignment.VERT_CENTER # May be: VERT_TOP, VERT_CENTER, VERT_BOTTOM, VERT_JUSTIFIED, VERT_DISTRIBUTED
style.alignment = alignment
dateFormat = xlwt.XFStyle()
dateFormat.num_format_str = 'yyyy/mm/dd'
dateFormat.borders = borders
timeFormat = xlwt.XFStyle()
timeFormat.num_format_str = 'hh/mm'
timeFormat.borders = borders
#写入excel表头数据
for t in range(len(table_header)):
worksheet.col(t).width=2800
if t>11 and t<30:
worksheet.write(0, t, table_header[t], color_style(45))
elif t>=30 and t<51:
worksheet.write(0, t, table_header[t], color_style(46))
elif t>=51 and t<66:
worksheet.write(0, t, table_header[t], color_style(47))
elif t>=66 and t<70:
worksheet.write(0, t, table_header[t], color_style(48))
elif t>=70 and t<74:
worksheet.write(0, t, table_header[t], color_style(49))
elif t >= 74 and t < 76:
worksheet.write(0, t, table_header[t], color_style(44))
else:
worksheet.write(0, t, table_header[t], style)
line=1
for n in range(len(files)):
data_list=[]
xl=xlrd.open_workbook(d+files[n]) #打开文件
table = xl.sheet_by_index(0) #获取表格内容
data_list.append(n+1) #序列号
data_list.append("".join(shop_name[n])) #店面
data_list.append('第二次') #次数
data_list.append(0.0) #总分平均分
data_list.append(0.0) #得分率平均分
data_list.append(table.cell(1,15).value) #总分
data_list.append(table.cell(2, 15).value) #总体得分率
data_list.append(date[n]) #进店日期
#进店时间 检测时段
dat = table.cell(3, 8).value
a = re.findall(r'\d+', dat)
b = datetime.datetime.strptime(str(a[0] + ":" + a[1]), "%H:%M")
data_list.append(b)
if int(a[0])>12:
data_list.append("下午")
else:
data_list.append("上午")
# 点餐内容/收银员/配餐员
data_list.append(table.cell(3, 12).value)
# 总体用餐经验
data_list.append(table.cell(4, 12).value)
#美观整洁环境得分率
for c in range(18):
data_list.append(table.cell(7+c, 15).value)
# 真诚友善服务得分率
for s in range(21):
data_list.append(table.cell(27 + s, 15).value)
#高质稳定产品得分率
for q in range(15):
data_list.append(table.cell(50 + q, 15).value)
#快速迅捷得分率
for f in range(4):
data_list.append(table.cell(67 + f, 15).value)
#严重事项
for i in range(4):
data_list.append(table.cell(73 + i, 15).value)
data_list.append(table.cell(77,14).value)
data_list.append(table.cell(78, 14).value)
#写入数据到对应的单元格
for j in range(len(data_list)):
if j==7:
worksheet.write(line, j, data_list[j],dateFormat)
elif j==8:
worksheet.write(line, j, data_list[j], timeFormat)
else:
worksheet.write(line, j, data_list[j], style)
#print(data_list[j])
line += 1
workbook.save('.\\result\\Excel_test.xls')