天天看點

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自動化辦公神器吧!相信它一定會給你帶來意想不到的驚喜和便利!

繼續閱讀