百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Python自动化办公,告别加班苦海!一键解决工资条发放大难题!

off999 2024-10-01 13:57 19 浏览 0 评论

你是否还在为每天每月的重复性工作而烦恼?是否还在为无法提前一张张微信截图的信息、一次次的复制粘贴而焦头烂额?Python自动化办公神器,一键解决你的办公难题,告别加班苦海,轻松逆袭职场巅峰!


办公需求

我有一个好朋友,在一家国企的分公司担任人事一职。每个月,总公司的人事都会将分公司人员的工资表格通过微信截图的形式发给她。她需要一张张打开图片,对照着内容手动输入到Excel表格中,然后再将这些数据制作成工资条,通过邮件发送给相关人员。整个过程繁琐至极,每个月都需要耗费两天的时间才能完成。对于领导以截图形式发送的方式也是敢怒不敢言。

痛点分析:

效率低下:手动输入和制作工资条的过程耗时耗力,效率低下。

容易出错:由于手动操作,难免会出现输入错误或遗漏的情况。

工作量大:随着公司人员的增加,工资条的数量也在不断增加,工作负担越来越重。

解决方案:

针对以上痛点,我利用Python自动化办公技术,为朋友量身定制了一个解决方案。

第一步:OCR算法自动提取工资表格

利用OCR(光学字符识别)算法,我们可以轻松地将微信截图中的工资表格自动提取到Excel中。这个过程只需要将图片复制到指定文件夹,程序会自动识别并转换。

python代码

from PIL import Image
import pytesseract
from openpyxl import Workbook


def load_image(image_path):
    image = Image.open(image_path)
    return image


def convert_to_grayscale(image):
    return image.convert("L")


def extract_text(image):
    return pytesseract.image_to_string(image)


def extract_table_data(text):
    rows = text.strip().split("\n")
    table_data = [row.split("\t") for row in rows]
    return table_data


def save_as_excel(table_data, output_path):
    workbook = Workbook()
    sheet = workbook.active


    for row_index, row_data in enumerate(table_data, start=1):
        for column_index, cell_data in enumerate(row_data, start=1):
            sheet.cell(row=row_index, column=column_index, value=cell_data)


    workbook.save(output_path)


# 调用示例
image_path = "table_image.jpg"
output_path = "table_data.xlsx"


image = load_image(image_path)
grayscale_image = convert_to_grayscale(image)
text = extract_text(grayscale_image)
table_data = extract_table_data(text)
save_as_excel(table_data, output_path)

可以看到用这种方式提取到的信息不仅没有错误,而且还完美的保持了表格的结构

总之,Python自动化工具为我们提供了一种高效、精准的方法,可以一键提取图片中的表格数据,并将其转换为可编辑的Excel格式。它不仅可以解决我们手动输入表格数据的繁琐问题,还可以保证数据的准确性和完整性。

第二步:自动制作工资条

在成功将工资表格导入Excel后,程序会自动根据预设的格式将表格转换成工资条形式。这样,原本需要手动一条一条复制粘贴的工作,现在只需一秒钟就能完成。

python代码

import pandas as pd
# 导入Excel写入库
from openpyxl import Workbook
import os


df = pd.read_excel('employee_data.xlsx')
print(df)
os.makedirs("工资条",exist_ok=True)
for i,row in df.iterrows():
    wb = Workbook()
    ws = wb.active
    ws.append(list(df.columns))
    ws.append(list(row))
    file_name = f"./工资条/{row['姓名']}_工资条.xlsx"
    wb.save(filename=file_name)


print("工资条生成完毕")


第三步:根据人名自动发送邮件

最后,程序会根据工资表中的员工姓名和邮箱信息,自动将工资条以邮件的形式发送给对应的人员。这样,不仅省去了手动发送邮件的繁琐过程,还能确保工资条准确无误地发送到每个员工的邮箱中。

import pandas as pd
import datetime
import smtplib
# 处理邮件内容的库,email.mine
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
import logging
import os




logging.basicConfig(filename='E:\code\Plan_m\log.log', level=logging.INFO,filemode = 'a', format = '【%(asctime)s】 【%(levelname)s】 >>>  %(message)s', datefmt = '%Y-%m-%d %H:%M')




# 邮箱属性配置
def send_email(text_msg): 
    # 邮箱服务端
    mailserver = 'smtp.163.com'
    # 发件人-填写自己的邮箱
    userName_SendMail = 'zdy15921159716@163.com'
    # 邮箱发件授权码-为发件人生成的授权码,详见下文
    userName_AuthCode = 'BOEFGGZHRAHEXGRN'
    # 定义邮件的接收者-我随便写的,若收件人较多,可用列表表示
    per_email = email_dict.get(text_msg.get("姓名","None"),"None")
    name = text_msg.get("姓名","None")
    print(per_email)
    received_mail = ['young@example.com'] # 加入祖总 刘总 张总邮箱
    # final_received_mail = received_mail+per_email
    # print(final_received_mail)
    # 发送一封简单的邮件,处理邮件内容
    content = f'本月工资条请查收'
    print(content)
    # 纯文本形式的邮件内容的定义,通过MIMEText进行操作,plain为默认的文本的展示形式
    email = MIMEMultipart()
    email['Subject'] = '工资条'  # 定义邮件主题
    email['From'] = "人事部"  # 发件人
    email['To'] = ','.join(received_mail)  # 收件人(可以添加多个,若只有一个收件人,可直接写邮箱号)
    filename = f'{name}_工资条.xlsx'
    with open(filename, 'rb') as attachment:
        part = MIMEApplication(
        attachment.read(),
        Name=filename
    )
      part['Content-Disposition'] = f'attachment; filename="{filename}"'
      email.attach(part)


    # 发送邮件


    # QQ邮箱的端口号是465,其他邮箱的端口号可自行百度,非QQ邮箱,一般使用SMTP即可,不需要有SSL
    smtp = smtplib.SMTP_SSL(mailserver, port=465)
    smtp.login(userName_SendMail, userName_AuthCode)
    smtp.sendmail(userName_SendMail, ','.join(received_mail), email.as_string())


    smtp.quit()
    logging.info('恭喜,邮件发送成功了')




# data = pd.read_excel("E:\Plan_m\批量样品跟进计划表.xlsx")
# # data['下单时间'] = pd.to_datetime(data['下单时间'])

163邮箱安全码设置【python代码中的密码使用这个而不是邮箱密码】

效果展示

经过实施这个解决方案后,朋友的工作负担得到了极大的减轻。现在,她每个月只需花费一秒钟的时间将图片复制到指定文件夹中,剩下的工作就全部交给了Python自动化办公神器。而且,由于程序的高度自动化和准确性,再也不用担心出现错误或遗漏的情况了。

结语

在这个信息化、智能化的时代里,Python自动化办公技术已经成为了我们提高工作效率、减轻工作负担的得力助手。如果你还在为繁琐的办公任务而烦恼不已的话,不妨尝试一下Python自动化办公神器吧!相信它一定会给你带来意想不到的惊喜和便利!



相关推荐

Python钩子函数实现事件驱动系统(created钩子函数)

钩子函数(HookFunction)是现代软件开发中一个重要的设计模式,它允许开发者在特定事件发生时自动执行预定义的代码。在Python生态系统中,钩子函数广泛应用于框架开发、插件系统、事件处理和中...

Python函数(python函数题库及答案)

定义和基本内容def函数名(传入参数):函数体return返回值注意:参数、返回值如果不需要,可以省略。函数必须先定义后使用。参数之间使用逗号进行分割,传入的时候,按照顺序传入...

Python技能:Pathlib面向对象操作路径,比os.path更现代!

在Python编程中,文件和目录的操作是日常中不可或缺的一部分。虽然,这么久以来,钢铁老豆也还是习惯性地使用os、shutil模块的函数式API,这两个模块虽然功能强大,但在某些情况下还是显得笨重,不...

使用Python实现智能物流系统优化与路径规划

阅读文章前辛苦您点下“关注”,方便讨论和分享,为了回馈您的支持,我将每日更新优质内容。在现代物流系统中,优化运输路径和提高配送效率是至关重要的。本文将介绍如何使用Python实现智能物流系统的优化与路...

Python if 语句的系统化学习路径(python里的if语句案例)

以下是针对Pythonif语句的系统化学习路径,从零基础到灵活应用分为4个阶段,包含具体练习项目和避坑指南:一、基础认知阶段(1-2天)目标:理解条件判断的逻辑本质核心语法结构if条件:...

[Python] FastAPI基础:Path路径参数用法解析与实例

查询query参数(上一篇)路径path参数(本篇)请求体body参数(下一篇)请求头header参数本篇项目目录结构:1.路径参数路径参数是URL地址的一部分,是必填的。路径参...

Python小案例55- os模块执行文件路径

在Python中,我们可以使用os模块来执行文件路径操作。os模块提供了许多函数,用于处理文件和目录路径。获取当前工作目录(CurrentWorkingDirectory,CWD):使用os....

python:os.path - 常用路径操作模块

应该是所有程序都需要用到的路径操作,不废话,直接开始以下是常用总结,当你想做路径相关时,首先应该想到的是这个模块,并知道这个模块有哪些主要功能,获取、分割、拼接、判断、获取文件属性。1、路径获取2、路...

原来如此:Python居然有6种模块路径搜索方式

点赞、收藏、加关注,下次找我不迷路当我们使用import语句导入模块时,Python是怎么找到这些模块的呢?今天我就带大家深入了解Python的6种模块路径搜索方式。一、Python模块...

每天10分钟,python进阶(25)(python进阶视频)

首先明确学习目标,今天的目标是继续python中实例开发项目--飞机大战今天任务进行面向对象版的飞机大战开发--游戏代码整编目标:完善整串代码,提供完整游戏代码历时25天,首先要看成品,坚持才有收获i...

python 打地鼠小游戏(打地鼠python程序设计说明)

给大家分享一段AI自动生成的代码(在这个游戏中,玩家需要在有限时间内打中尽可能多的出现在地图上的地鼠),由于我现在用的这个电脑没有安装sublime或pycharm等工具,所以还没有测试,有兴趣的朋友...

python线程之十:线程 threading 最终总结

小伙伴们,到今天threading模块彻底讲完。现在全面总结threading模块1、threading模块有自己的方法详细点击【threading模块的方法】threading模块:较低级...

Python信号处理实战:使用signal模块响应系统事件

信号是操作系统用来通知进程发生了某个事件的一种异步通信方式。在Python中,标准库的signal模块提供了处理这些系统信号的机制。信号通常由外部事件触发,例如用户按下Ctrl+C、子进程终止或系统资...

Python多线程:让程序 “多线作战” 的秘密武器

一、什么是多线程?在日常生活中,我们可以一边听音乐一边浏览新闻,这就是“多任务处理”。在Python编程里,多线程同样允许程序同时执行多个任务,从而提升程序的执行效率和响应速度。不过,Python...

用python写游戏之200行代码写个数字华容道

今天来分析一个益智游戏,数字华容道。当初对这个游戏颇有印象还是在最强大脑节目上面,何猷君以几十秒就完成了这个游戏。前几天写2048的时候,又想起了这个游戏,想着来研究一下。游戏玩法用尽量少的步数,尽量...

取消回复欢迎 发表评论: