天天看点

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

作者:人工智能取经人

你是否还在为每天每月的重复性工作而烦恼?是否还在为无法提前一张张微信截图的信息、一次次的复制粘贴而焦头烂额?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自动化办公,告别加班苦海!一键解决工资条发放大难题!

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

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

第二步:自动制作工资条

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

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

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("工资条生成完毕")           
Python自动化办公,告别加班苦海!一键解决工资条发放大难题!
Python自动化办公,告别加班苦海!一键解决工资条发放大难题!

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

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

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 = '[email protected]'
    # 邮箱发件授权码-为发件人生成的授权码,详见下文
    userName_AuthCode = 'BOEFGGZHRAHEXGRN'
    # 定义邮件的接收者-我随便写的,若收件人较多,可用列表表示
    per_email = email_dict.get(text_msg.get("姓名","None"),"None")
    name = text_msg.get("姓名","None")
    print(per_email)
    received_mail = ['[email protected]'] # 加入祖总 刘总 张总邮箱
    # 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自动化办公技术已经成为了我们提高工作效率、减轻工作负担的得力助手。如果你还在为繁琐的办公任务而烦恼不已的话,不妨尝试一下Python自动化办公神器吧!相信它一定会给你带来意想不到的惊喜和便利!

继续阅读