600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > python工资条教程_批量发工资怎么操作_利用python轻松解决用邮箱批量发工资条...

python工资条教程_批量发工资怎么操作_利用python轻松解决用邮箱批量发工资条...

时间:2024-05-20 22:55:50

相关推荐

python工资条教程_批量发工资怎么操作_利用python轻松解决用邮箱批量发工资条...

每次要发工资条公司负现工资条的同事都很烦恼,二百多号人,只能一个个人去发.于是她问我有什么办法可以批量发工资条的,我说你要收集员工的邮箱地址.然后我花半天写一个工具给你,她说早知道之前就找你啦.

下面费话不多说,直接上代码.

以下需要安装pandas库以及依赖库.

如有不懂配置或其它问题可以发邮件给我大家交流一下,我的qq邮箱:447282087importos,datetime,time

importpandasaspd

importtkinterastk

fromtkinterimportfiledialog

importsmtplib

fromemail.mime.textimportMIMEText

fromemail.utilsimportformataddr

defmail(uname,m,txt,tomail,upass):

my_sender=''#发件人邮箱账号

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("",465)#发件人邮箱中的SMTP服务器,端口是465

server.login(my_sender,my_pass)#括号中对应的是发件人邮箱账号、邮箱密码

server.sendmail(my_sender,[my_user,],msg.as_string())#括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件

server.quit()#关闭连接

exceptException:#如果try中的语句没有执行,则会执行下面的ret=False

ret=False

returnret

defReadFile(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=['编号','姓名','应出勤天数','实际出勤(天)','基本底薪','实际底薪','绩效提成','外访补贴',

'其他补贴','加班补贴(天数)','加班补贴(金额)','应发工资合计','事假(天)','事假(金额)',

'扣费明细','扣下其他','本月工资合计','社保缴纳金额(公司)','社保缴纳金额(个人)','公积金缴纳金额(公司)',

'公积金缴纳金额(个人)','本月实缴税额','实发工资','个人邮箱']

foriindf.index.values:#获取行号的索引,并对其进行遍历:

#枫软备注1=客户编号(长度为15),备注2=批次,备注3=合同编号(长度最大为5位数),相关备注=包含(产品代码信息,产品代码一般为13位)

row_data=df.loc[i].reindex(title)

CustomerNumber=''

ContractNumber=''

ProductCode=''

html='

html+='

'

fortitlestrintitle:

html+='

%s'%titlestr

html+='

'

html+='

'

fortitlestrintitle:

html+='

%s'%row_data['%s'%titlestr]

html+='

'

html+='

'

if(row_data['个人邮箱']!='nan'orrow_data['个人邮箱']!=''):

mail(row_data['姓名'],m,html,row_data['个人邮箱'],upass)

time.sleep(1)

else:

err_name+=','+row_data['姓名']

print(html,'')

print('发送失败的人员:'+err_name)

defrep(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('☎','')

returnstrs

defgetLocalFile():#获取文件

root=tk.Tk()

root.withdraw()

filePath=filedialog.askopenfilename()

print('文件路径:',filePath)

returnfilePath

input_file=getLocalFile()

ReadFile(input_file)

第一步:运行程序选择做好的工资条excel表,然后点击打开

第二步:输入工资的月份与箱邮密码,这里我输入9月份.

下面是工资条的excel模板

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。