python工资条教程_批量发工资怎么操作_利用python轻松解决用邮箱批量发工资条...
每次要發工資條公司負現工資條的同事都很煩惱,二百多號人,只能一個個人去發.于是她問我有什么辦法可以批量發工資條的,我說你要收集員工的郵箱地址.然后我花半天寫一個工具給你,她說早知道之前就找你啦.
下面費話不多說,直接上代碼.
以下需要安裝pandas庫以及依賴庫.
如有不懂配置或其它問題可以發郵件給我大家交流一下,我的qq郵箱:447282087import?os,datetime,time
import?pandas?as?pd
import?tkinter?as?tk
from?tkinter?import?filedialog
import?smtplib
from?email.mime.text?import?MIMEText
from?email.utils?import?formataddr
def?mail(uname,m,txt,tomail,upass):
my_sender='test126.com'????#?發件人郵箱賬號
my_pass?=?upass????#?發件人郵箱密碼(當時申請smtp給的口令)
my_user?=?tomail?????#?收件人郵箱賬號,我這邊發送給自己
ret=True
try:
msg=MIMEText(txt,'html','utf-8')
msg['From']=formataddr(["發件人昵稱",my_sender])??#?括號里的對應發件人郵箱昵稱、發件人郵箱賬號
msg['To']=formataddr(["收件人昵稱",my_user])??????????????#?括號里的對應收件人郵箱昵稱、收件人郵箱賬號
msg['Subject']="%s?%s月份工資條"?%(uname,m)????????????????#?郵件的主題,也可以說是標題
server=smtplib.SMTP_SSL("smtp.126.com",?465)??#?發件人郵箱中的SMTP服務器,端口是465
server.login(my_sender,?my_pass)??#?括號中對應的是發件人郵箱賬號、郵箱密碼
server.sendmail(my_sender,[my_user,],msg.as_string())??#?括號中對應的是發件人郵箱賬號、收件人郵箱賬號、發送郵件
server.quit()#?關閉連接
except?Exception:#?如果?try?中的語句沒有執行,則會執行下面的?ret=False
ret=False
return?ret
def?ReadFile(filePath):
print('打開文件:%s'?%?filePath)
filePath?=?filePath.replace('\\',?'/')
if?(os.path.exists(filePath)?==?False):
print('excel文件:%s??不存在??%s'?%?(filePath,?datetime.datetime.now()))
#?dfxsd?=?pd.read_excel(filePath)
df?=?pd.read_excel(filePath,?dtype=str)
err_i?=?0
count_i?=?0
err_name?=?''
m?=?input('請輸入工資條的月份:')
upass?=?input('請輸入你的郵箱密碼:')
title?=?['編號',?'姓名',?'應出勤天數',?'實際出勤(天)',?'基本底薪',?'實際底薪',?'績效提成',?'外訪補貼',
'其他補貼',?'加班補貼(天數)',?'加班補貼(金額)',?'應發工資合計',?'事假(天)',?'事假(金額)',
'扣費明細',?'扣下其他','本月工資合計',?'社保繳納金額(公司)',?'社保繳納金額(個人)',?'公積金繳納金額(公司)',
'公積金繳納金額(個人)',?'本月實繳稅額',?'實發工資',?'個人郵箱']
for?i?in?df.index.values:??#?獲取行號的索引,并對其進行遍歷:
#?楓軟??備注1?=?客戶編號(長度為15)?,?備注2?=?批次,??備注3?=?合同編號(長度最大為5位數),?相關備注?=?包含(產品代碼信息,產品代碼一般為13位)
row_data?=?df.loc[i].reindex(title)
CustomerNumber?=?''
ContractNumber?=?''
ProductCode?=?''
html?=?'
html?+=?'
'for?titlestr?in?title:
html?+=?'
%s'?%titlestrhtml?+=?'
'html?+=?'
'for?titlestr?in?title:
html?+=?'
%s'?%?row_data['%s'?%titlestr]html?+=?'
'html?+=?'
'if(row_data['個人郵箱']!='nan'?or?row_data['個人郵箱']!=''):
mail(row_data['姓名'],m,html,row_data['個人郵箱'],upass)
time.sleep(1)
else:
err_name?+=?','?+?row_data['姓名']
print(html,'')
print('發送失敗的人員:'+err_name)
def?rep(strs):??#?替換字符
strs?=?str(strs)
strs?=?strs.replace('?',?'')
strs?=?strs.replace('???',?'')
strs?=?strs.replace('\r',?'')
strs?=?strs.replace('\n',?'')
strs?=?strs.replace("'",?'')
strs?=?strs.replace('"',?'')
strs?=?strs.replace('\\',?'\\\\')
strs?=?strs.replace('/',?'')
strs?=?strs.replace('/',?'')
strs?=?strs.replace('%',?'')
strs?=?strs.replace(':',?'')
strs?=?strs.replace(':',?'')
strs?=?strs.replace('\032',?'\\Z')
strs?=?strs.replace('?',?'')
strs?=?strs.replace('?',?'')
return?strs
def?getLocalFile():??#?獲取文件
root?=?tk.Tk()
root.withdraw()
filePath?=?filedialog.askopenfilename()
print('文件路徑:',?filePath)
return?filePath
input_file?=?getLocalFile()
ReadFile(input_file)
第一步:運行程序選擇做好的工資條excel表,然后點擊打開
第二步:輸入工資的月份與箱郵密碼,這里我輸入9月份.
下面是工資條的excel模板
總結
以上是生活随笔為你收集整理的python工资条教程_批量发工资怎么操作_利用python轻松解决用邮箱批量发工资条...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三星S7edge刷极光ROM的总结
- 下一篇: C语言符号意思(看了必懂系列)