日常工作中,我们接触最多的就是各种excel报表,各个口的数据汇总、数据报表用的几乎都是EXCEL文件。刚好我们营运的同事每天都有个经营汇总日报需要从excel文件里提取数据,再通过微信汇报给店总。因为功能涉及的比较简单,以此来简单说说怎么从excel里爬取数据。
首先excel数据的读取,我们要用到xlrd模块,xlrd的功能是非常强大的,具体涉及到的内容大家可以去他的官方网站查阅使用文档:xlrd documentation ,下面开始写代码,写得比较糙,大家看看就好, 。
import xlrd #导入xlrd模块
import time #导入系统时间模块
T0 = time.strftime('%Y',time.localtime())+'年'+time.strftime("%m",time.localtime())+'月'+time.strftime("%d",time.localtime())+'日'
#关于系统时间的模块简单说一下:%Y是年,%m是月,%d,剩下的内容较多,请大家参考下文。
time.strftime('%w',time.localtime()) #输出今天是星期几
python中时间日期格式化符号:
- %y 两位数的年份表示(00-99)
- %Y 四位数的年份表示(000-9999)
- %m 月份(01-12)
- %d 月内中的一天(0-31)
- %H 24小时制小时数(0-23)
- %I 12小时制小时数(01-12)
- %M 分钟数(00-59)
- %S 秒(00-59)
- %a 本地简化星期名称
- %A 本地完整星期名称
- %b 本地简化的月份名称
- %B 本地完整的月份名称
- %c 本地相应的日期表示和时间表示
- %j 年内的一天(001-366)
- %p 本地A.M.或P.M.的等价符
- %U 一年中的星期数(00-53)星期天为星期的开始
- %w 星期(0-6),星期天为星期的开始
- %W 一年中的星期数(00-53)星期一为星期的开始
- %x 本地相应的日期表示
- %X 本地相应的时间表示
- %Z 当前时区的名称
- %% %号本身
下面开始打开文件:
# 首先打开excle
xl = xlrd.open_workbook(r'd:day report每日数据分析.xlsx')
# 通过索引获取工作表,这里就一个sheet,所以打开第一个
table = xl.sheets()[0]
# 获取一共多少行
rows = table.nrows
print(rows)
# 获取最新一行的内容(其实就是最下面一行),记住:excel的索引是从0开始!!!
T1 = table.cell(rows-1,1).value
#从最新即最下一行开始计算
a1 = table.cell(rows-1,2).value
#下面把a1的值小数取2位,然后转换成字符串,存入变量kl1,这是一个客流数据
kl1=str("%.2f" % a1)
a2 = table.cell(rows-8,2).value
#同上,这个数据是前期客流量
kl2=str("%.2f" % a2)
a3 = table.cell(rows-1,3).value *100 #客流环比值百分比,所以乘以100
klhb=str("%.2f" % a3)
a4 = table.cell(rows-1,4).value
#总客流数据
zkl=str("%.2f" % a4)
a5 = table.cell(rows-1,10).value
#销售数据1
xs1=str("%.2f" % a5)
a6 = table.cell(rows-8,10).value
#销售数据2
xs2=str("%.2f" % a6)
a7 = table.cell(rows-1,11).value *100 #销售环比值百分比,所以乘以100
#销售环比数据
xshb=str("%.2f" % a7)
a8 = table.cell(rows-1,12).value
#总销售数据
zxs=str("%.2f" % a8)
#以下内容是一些文字内容的爬取,做一个print是为了检查爬取的内容是否正确,后面使用时再注释掉
a9 = table.cell(rows-1,13).value
sh='%d' %a9
#print(sh)
shmc10 = table.cell(rows-1,14).value
#print(shmc10)
reason = table.cell(rows-1,15).value
#print(reason)
solutions = table.cell(rows-1,16).value
#print(solutions)
sh2 = table.cell(rows-1,17).value
#print(sh2)
huodong = table.cell(rows-1,18).value
#print(huodong)
下面是另一个模块的使用,主要是获取一些天气温度信息,看过我前面内容的应该就知道,这个是我发送客流时用的天气信息代码:
import requests
url = "https://restapi.amap.com/v3/weather/weatherInfo?city=450300&key=1234567???"
weather_data = requests.get(url)
data=eval(weather_data.text)
a = data.get('lives')
print('天气:'+a[0].get('weather')+','+'温度:'+a[0].get('temperature')+'°')
A1 = '天气:'+a[0].get('weather')+','+'温度:'+a[0].get('temperature')+'°'
最后检查一下所有输出信息是否正确:
print('尊敬的领导:【xxxx广场】'+T0+'经营情况简报('+T1+','+A1+')'+'n'+
'一、截止今日项目招商率xx%,开业率xx%,开业总品牌数:xx家,开业总面积:xxxxx㎡;'+'n'+
'二、项目总客流:'+kl1+'万人次,上周同期:'+kl2+'万人次,环比:'+klhb+'%,月累计'+zkl+'万人次;'+'n'+
'三、项目总销售额:'+xs1+'万元,上周同期:'+xs2+'万元,环比:'+xshb+'%,月累计'+zxs+'万元;'+'n'+
'四、今日零单商户:'+sh+'家:'+shmc10+'n'+
'原因:'+reason+'n'+
'解决措施:'+solutions+'n'+
'五、今日未复工商户:'+sh2+'n'+
'六、今日执行的线上推广活动情况:'+huodong)
当然,以上的所有都是为了输出到微信,然后我就继续沿用之前的客流发送代码:
#复制以上输出信息
import pyperclip
dd=pyperclip.paste()
pyperclip.copy('尊敬的领导:【xxxx场】'+T0+'经营情况简报(星期'+T1+','+A1+')'+'n'+
'一、截止今日项目招商率xxx%,开业率xxxx%,开业总品牌数:xxx家,开业总面积:xxxx㎡;'+'n'+
'二、项目总客流:'+kl1+'万人次,上周同期:'+kl2+'万人次,环比:'+klhb+'%,月累计'+zkl+'万人次;'+'n'+
'三、项目总销售额:'+xs1+'万元,上周同期:'+xs2+'万元,环比:'+xshb+'%,月累计'+zxs+'万元;'+'n'+
'四、今日零单商户:'+sh+'家:'+shmc10+'n'+
'原因:'+reason+'n'+
'解决措施:'+solutions+'n'+
'五、今日未复工商户:'+sh2+'n'+
'六、今日执行的线上推广活动情况:'+huodong)
应营运同事的需求,这里只是把输出内容存入剪贴板,这样他们再次发送前检查一遍,或者发给多位同事及领导~o(* ̄︶ ̄*)o