python工资条教程_批量发工资怎么操作_利用python轻松解决用邮箱批量发工资条...
每次要發(fā)工資條公司負(fù)現(xiàn)工資條的同事都很煩惱,二百多號(hào)人,只能一個(gè)個(gè)人去發(fā).于是她問我有什么辦法可以批量發(fā)工資條的,我說你要收集員工的郵箱地址.然后我花半天寫一個(gè)工具給你,她說早知道之前就找你啦.
下面費(fèi)話不多說,直接上代碼.
以下需要安裝pandas庫以及依賴庫.
如有不懂配置或其它問題可以發(fā)郵件給我大家交流一下,我的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'????#?發(fā)件人郵箱賬號(hào)
my_pass?=?upass????#?發(fā)件人郵箱密碼(當(dāng)時(shí)申請(qǐng)smtp給的口令)
my_user?=?tomail?????#?收件人郵箱賬號(hào),我這邊發(fā)送給自己
ret=True
try:
msg=MIMEText(txt,'html','utf-8')
msg['From']=formataddr(["發(fā)件人昵稱",my_sender])??#?括號(hào)里的對(duì)應(yīng)發(fā)件人郵箱昵稱、發(fā)件人郵箱賬號(hào)
msg['To']=formataddr(["收件人昵稱",my_user])??????????????#?括號(hào)里的對(duì)應(yīng)收件人郵箱昵稱、收件人郵箱賬號(hào)
msg['Subject']="%s?%s月份工資條"?%(uname,m)????????????????#?郵件的主題,也可以說是標(biāo)題
server=smtplib.SMTP_SSL("smtp.126.com",?465)??#?發(fā)件人郵箱中的SMTP服務(wù)器,端口是465
server.login(my_sender,?my_pass)??#?括號(hào)中對(duì)應(yīng)的是發(fā)件人郵箱賬號(hào)、郵箱密碼
server.sendmail(my_sender,[my_user,],msg.as_string())??#?括號(hào)中對(duì)應(yīng)的是發(fā)件人郵箱賬號(hào)、收件人郵箱賬號(hào)、發(fā)送郵件
server.quit()#?關(guān)閉連接
except?Exception:#?如果?try?中的語句沒有執(zhí)行,則會(huì)執(zhí)行下面的?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('請(qǐng)輸入工資條的月份:')
upass?=?input('請(qǐng)輸入你的郵箱密碼:')
title?=?['編號(hào)',?'姓名',?'應(yīng)出勤天數(shù)',?'實(shí)際出勤(天)',?'基本底薪',?'實(shí)際底薪',?'績效提成',?'外訪補(bǔ)貼',
'其他補(bǔ)貼',?'加班補(bǔ)貼(天數(shù))',?'加班補(bǔ)貼(金額)',?'應(yīng)發(fā)工資合計(jì)',?'事假(天)',?'事假(金額)',
'扣費(fèi)明細(xì)',?'扣下其他','本月工資合計(jì)',?'社保繳納金額(公司)',?'社保繳納金額(個(gè)人)',?'公積金繳納金額(公司)',
'公積金繳納金額(個(gè)人)',?'本月實(shí)繳稅額',?'實(shí)發(fā)工資',?'個(gè)人郵箱']
for?i?in?df.index.values:??#?獲取行號(hào)的索引,并對(duì)其進(jìn)行遍歷:
#?楓軟??備注1?=?客戶編號(hào)(長度為15)?,?備注2?=?批次,??備注3?=?合同編號(hào)(長度最大為5位數(shù)),?相關(guān)備注?=?包含(產(chǎn)品代碼信息,產(chǎn)品代碼一般為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['個(gè)人郵箱']!='nan'?or?row_data['個(gè)人郵箱']!=''):
mail(row_data['姓名'],m,html,row_data['個(gè)人郵箱'],upass)
time.sleep(1)
else:
err_name?+=?','?+?row_data['姓名']
print(html,'')
print('發(fā)送失敗的人員:'+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)
第一步:運(yùn)行程序選擇做好的工資條excel表,然后點(diǎn)擊打開
第二步:輸入工資的月份與箱郵密碼,這里我輸入9月份.
下面是工資條的excel模板
總結(jié)
以上是生活随笔為你收集整理的python工资条教程_批量发工资怎么操作_利用python轻松解决用邮箱批量发工资条...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三星S7edge刷极光ROM的总结
- 下一篇: python下批量修改图片格式和大小