Python自动化办公+Sever酱程序_推送值班提醒_轮班制

目录

完整代码如下

联系我们,一起学Python吧,零基础入门到进阶


利用python自动化办公模块+sever酱实现排班信息微信自动推送提醒,方便广大朋友们知道自己的岗位班次

在这里插入图片描述

1、根据自己所在公司的轮班制度确认好员工的排班(本文以excel排班为例),如图:
在这里插入图片描述

2、编写排班相关代码:

#导入模块
import datetime
import xlrd
from xlrd import xldate_as_tuple
# 解析excel文件
def read_excel(filename, name, to_date):
    # 打开文件
    workbook = xlrd.open_workbook(filename)
    # 获取所有sheet
    # print(workbook.sheet_names())
    sheetname = workbook.sheet_names()[0]
    # 根据sheet索引或者名称获取sheet内容
    ws = workbook.sheet_by_name(sheetname)
    context = []
    # 获取单元格内容
    # j = 2 早班   3 正常班   4 正常班2  5 夜班  6 休息  7 巡检
    for i in range(ws.nrows):
        if ws.cell(i, 0).ctype == 3:
            date = datetime.datetime(*xldate_as_tuple(ws.cell(i, 0).value, 0)).strftime('%m-%d')
            #to_date = '3-24'
            if date == to_date:
                for j in range(ws.ncols):
                    if ws.cell(i, j).ctype == 3:
                        date = datetime.datetime(*xldate_as_tuple(ws.cell(i, 0).value, 0))
                        context.append("%s月%s日" % (date.strftime('%m'), date.strftime('%d')))
                        #print(date)
                    elif name in ws.cell(i, j).value:
                        if j == 2:
                            context.append("早班")
                        elif j == 3:
                            context.append("正常班")
                        elif j == 4:
                            context.append("正常班2")
                        elif j == 5:
                            if ws.cell(i, 7).value != '':
                                context.append("夜班,记得巡检")
                            else:
                                context.append("夜班")
                        elif j == 6:
                            text = "明天休息"
                            d = 1
                            if name in ws.cell(i + d, j).value:
                                while True:
                                    if name in ws.cell(i + d, j).value:
                                        d = d + 1
                                    else:
                                        break
                                context.append("连休" + str(d) + "天哦")
                            else:
                                context.append("休息")
    return context

3、设置排班提醒

#导入模块
import os
import sys
import requests

# 发送相关信息
def send_Wechat():
    # 获取当天与第二天的日期
    tomorrow = (datetime.datetime.now() + datetime.timedelta(days=1)).strftime('%m-%d')
    today = datetime.datetime.today().strftime('%m-%d')
    # 遍历当前目录文件名
    # 获取当前月份
    month = "%s月" % datetime.datetime.now().strftime('%m')
    filename = ""
    filename1 = ""
    for dir in os.listdir(sys.path[0] + '/'):
        if month in dir:
            filename = dir
            filename1 = dir
    # 跨月度切换班表
    if "%s月" % (datetime.datetime.now() + datetime.timedelta(days=1)).strftime('%m') != month:
        for dir in os.listdir(sys.path[0] + '/'):
            if "%s月" % (datetime.datetime.now() + datetime.timedelta(days=1)).strftime('%m') in dir:
                filename1 = dir
                
    person = get_name()
    # 遍历所有人员并发送相关信息
    for p in person:
        name = p[0]
        KEY = p[1]
        today_info = read_excel(filename, name, today)
        #print(today_info)
        today_context = ""
        for text in today_info:
            today_context = today_context + " " + text

        tomorrow_info = read_excel(filename1, name, tomorrow)
       # print(tomorrow_info)
        tomorrow_context = ""
        for text in tomorrow_info:
            tomorrow_context = tomorrow_context + " " + text

        context = '''>     今天是:''' + today_context + \
                  '''\n>     明天是:''' + tomorrow_context
        title = "今日班次"
        URL = "http://sc.ftqq.com/" + KEY + ".send?text=" + title + "&desp=" + context
        # print(URL)
        requests.post(URL)

4、获取Sever酱调用代码生成SCKEY

# 获取人员列表
def get_name():
    xml = sys.path[0] + '/name.xml'
    root = etree.parse(xml)
    person = []
    for names in root.getroot():
        module = etree.ElementTree(names)
        name = module.xpath('//names/@name')[0]
        for k in names:
            key = k.text
            person.append([name, key])
    return person

完整代码如下

#!/usr/bin/env python3
# -*- coding:utf-8 -*-
# __author__ :
# date : 2020/09
# version: 2.0


import datetime
import os
from lxml import etree
import requests
import sys
import xlrd
from xlrd import xldate_as_tuple
import weather


# 解析excel文件
def read_excel(filename, name, to_date):
    # 打开文件
    workbook = xlrd.open_workbook(filename)
    # 获取所有sheet
    # print(workbook.sheet_names())
    sheetname = workbook.sheet_names()[0]
    # 根据sheet索引或者名称获取sheet内容
    ws = workbook.sheet_by_name(sheetname)
    context = []
    # 获取单元格内容
    # j = 2 早班   3 正常班   4 正常班2  5 夜班  6 休息  7 巡检
    for i in range(ws.nrows):
        if ws.cell(i, 0).ctype == 3:
            date = datetime.datetime(*xldate_as_tuple(ws.cell(i, 0).value, 0)).strftime('%m-%d')
            #to_date = '3-24'
            if date == to_date:
                for j in range(ws.ncols):
                    if ws.cell(i, j).ctype == 3:
                        date = datetime.datetime(*xldate_as_tuple(ws.cell(i, 0).value, 0))
                        context.append("%s月%s日" % (date.strftime('%m'), date.strftime('%d')))
                        #print(date)
                    elif name in ws.cell(i, j).value:
                        if j == 2:
                            context.append("早班")

                        elif j == 3:
                            context.append("正常班")

                        elif j == 4:
                            context.append("正常班2")

                        elif j == 5:
                            if ws.cell(i, 7).value != '':
                                context.append("夜班,记得巡检")

                            else:
                                context.append("夜班")

                        elif j == 6:
                            text = "明天休息"

                            d = 1
                            if name in ws.cell(i + d, j).value:
                                while True:
                                    if name in ws.cell(i + d, j).value:
                                        d = d + 1
                                    else:
                                        break
                                context.append("连休" + str(d) + "天哦")

                            else:
                                context.append("休息")

    return context


# 发送相关信息
def send_Wechat():
    # 获取当天与第二天的日期
    tomorrow = (datetime.datetime.now() + datetime.timedelta(days=1)).strftime('%m-%d')
    today = datetime.datetime.today().strftime('%m-%d')
    # 遍历当前目录文件名
    # 获取当前月份
    month = "%s月" % datetime.datetime.now().strftime('%m')
    filename = ""
    filename1 = ""
    for dir in os.listdir(sys.path[0] + '/'):
        if month in dir:
            filename = dir
            filename1 = dir
    # 跨月度切换班表
    if "%s月" % (datetime.datetime.now() + datetime.timedelta(days=1)).strftime('%m') != month:
        for dir in os.listdir(sys.path[0] + '/'):
            if "%s月" % (datetime.datetime.now() + datetime.timedelta(days=1)).strftime('%m') in dir:
                filename1 = dir

    # 获取当天天气
    # wea = ""
    # for x in weather.WeatherIterable(['广州']):
    #     wea = x
    # 获取需要发送人员名单
    person = get_name()
    # 遍历所有人员并发送相关信息
    for p in person:
        name = p[0]
        KEY = p[1]
        today_info = read_excel(filename, name, today)
        #print(today_info)
        today_context = ""
        for text in today_info:
            today_context = today_context + " " + text

        tomorrow_info = read_excel(filename1, name, tomorrow)
       # print(tomorrow_info)
        tomorrow_context = ""
        for text in tomorrow_info:
            tomorrow_context = tomorrow_context + " " + text

        context = '''>     今天是:''' + today_context + \
                  '''\n>     明天是:''' + tomorrow_context
        title = "今日班次"
        URL = "http://sc.ftqq.com/" + KEY + ".send?text=" + title + "&desp=" + context
        # print(URL)
        requests.post(URL)



# 获取人员列表
def get_name():
    xml = sys.path[0] + '/name.xml'
    root = etree.parse(xml)
    person = []
    for names in root.getroot():
        module = etree.ElementTree(names)
        name = module.xpath('//names/@name')[0]
        for k in names:
            key = k.text
            person.append([name, key])
    return person


if __name__ == '__main__':
    send_Wechat()
    # test()

最后,想要添加天气提醒可在代码块导入相关模块

import weather

 

联系我们,一起学Python吧,零基础入门到进阶

每周每日,分享Python实战代码,入门资料,进阶资料,基础语法,爬虫,数据分析,web网站,机器学习,深度学习等等。


​微信群(关注「Python家庭」一起轻松学Python吧)

​个人微信(备注来意,学习交流,聊聊人生~)

​  

猜你喜欢

转载自blog.csdn.net/qq_34409973/article/details/108598230