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' %titlestr

html += '

'

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模板

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/505805.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python数据挖掘电影评分分析_[Python数据挖掘]爬行豆瓣影评数据,python,爬取

# 1、导入需要的库import urllib.requestfrom bs4 import BeautifulSoup# 随机数的库import random# 时间库import time# 表格库import csv# 2、分多个浏览器访问豆瓣网,防止访问多页时被拒绝# 每个浏览器在请求数据的时候,请求头是不一样# 计算机命名规…

网站本地调试工具_一款Web调试代理工具:Fiddler

前言在移动软件开发工作中,我们经常需要对APP软件进行调试及问题定位。在我们检查定位问题的时候,很多情况下需要查看接口的请求情况,当我们没有在调试模式的情况下,如何才能有效快捷的得到各个接口的请求情况呢?这个时…

python语法知识_Python 语法小知识

对象通过引用传递的 不支持自增 自减之类的 i i 多元赋值 右边是元组 ,多元赋值可以实现不需要中间变量 交换两个变量的值 _xxx_ 系统定义的名字 _xxx 私有变量 python对象的类型和内存都是在运行时才确定的 当对象被创建时,就创建了一个引用计数 …

plsql无监听程序_详细!看看顶级互联网公司都在研究的无服务器架构!

无服务器计算(Severless computing,简称 Serverless)现在是软件架构圈中的热门话题,国外三大云计算供应商(Amazon、Google 和 Microsoft)都在大力投入这个领域,涌现了不计其数的相关书籍、开源框架、商业产品、技术大会。到底什么是 Serverle…

ef.extensions mysql_EFcore 使用 EFCore.BulkExtensions(不支持mysql)或 EntityFramework-Plus 批量增加、删除、修改...

EFCore.BulkExtensions,EntityFramework-Plus 都是Microsoft推荐的EFcore扩展 。可以通过nuget安装一、EFCore.BulkExtensions使用方法如下:实体批量操作:context.BulkInsert(entitiesList); context.BulkInsertAsync(entitiesList);context…

sqlyog怎么连接mysql错误2003_网站突然连不上,MySQL连接错误经常内存不够宕机

阿里云服务器 MySQL 经常自动停止、挂掉、重启。打开 MySQL 的 error.log 错误信息,在阿里云 CentOS 的路径为 /alidata/log/mysql/error.log,如下:2016-03-13 00:16:37 0[Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use--e…

华为抓截屏_原来这才是华为截屏的正确姿势,今天才知道,千万别不当回事

原标题:原来这才是华为截屏的正确姿势,今天才知道,千万别不当回事大家都知道我们的华为手机有很多好用的功能,截屏就是其中一个,那么你知道华为手机截屏的正确姿势吗?今天小编就带大家一起看看吧&#xff0…

python显示图片列表_python读取图片任意范围区域

使用python进行图片处理,现在需要读出图片的任意一块区域,并将其转化为一维数组,方便后续卷积操作的使用。下面使用两种方法进行处理:convert 函数from PIL import Imageimport numpy as npimport matplotlib.pyplot as pltdef Im…

mysql进阶3_MySQL进阶

1.视图概述:视图就相当于一个临时表,但是只定义了对应关系,用这个视图的时候,就会自行执行视图里定义好的sql语句,视图是只能去查原表的数据,不能去修改原表里面的数据的;视图的增删改查&#x…

python 反射和动态加载_Python的反射

什么是反射反射是一个很重要的概念,它可以把字符串映射到实例的变量或者实例的方法然后可以去执行调用、修改等操作。它有四个重要的方法:getattr 获取指定字符串名称的对象属性setattr 为对象设置一个对象hasattr 判断对象是否有对应的对象(字符串)dela…

oracle和mysql通用建表语句_mysql建表语句到oracle怎么写?

mysql建表语句到oracle怎么写?CREATE TABLE Advertisment ( AdId int(8) NOT NULL auto_increment, AderId int(8) default NULL, AdName varchar(50) default NULL, AdKind varchar(30) default NULL, CreateMan varchar(30) default NULL, StartDate date d…

onenote快捷键_高效飞快地使用onenote快捷键:快捷键功能架构解析

默认快捷键有近200组,涉及到的功能如此之多,但真正频繁使用的,可能也就几十组。如何从这么多快捷键中选择出自己需要的呢?你需要一张功能架构参考图。1默认快捷键功能架构图官方文档已对快捷键做了初步分类,但比较抽象…

怎么设置php.ini允许sql语句插入空值到mysql里_php读取.sql文件,写入mysql,navicat显示乱码,编码设置...

案例:php文件:install.php--------编码:php保存文件的编码、php header编码、php程序的默认编码、php写入数据库的编码php读取的sql代码文件:php.sql--------编码:sql保存文件的编码mysql数据库:test1-----…

ueditor如何设置上传图片的高度宽度_上百张图片上传并对齐,你加班2小时没搞定,同事简单三步就完成...

Excel除了汇总数据还可以上传保存相片,比如我们在人力信息表中将每个人的相片放到表格里面去,或者我们需要将宠物对应的相片放到表格里面去,这就涉及到图片的批量上传以及对齐的操作。如图所示,我们需要将每个动物对应的图片&…

pdf在线翻译_如何免费快速地翻译pdf英文文档,并保留很好的格式?

对于那些科研工作者,每天阅读外文文献是必须要做的,大家都知道,一份外文的pdf文献内容是很多的,阅读量也是非常大,边看边翻译的话,这个任务还是很艰巨的,面对如此大的阅读量,该怎么快…

java的super_Java中this和super的用法总结

这几天看到类在继承时会用到this和super,这里就做了一点总结,与各位共同交流,有错误请各位指正~thisthis是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针。this的用法在java中大体可以分…

服务器具有挂起的重新启动_ESP8266与网络服务器实时通讯

背景知识视频教程Bootstrap 4布局:响应式单页设计​viadean.comNode.js,Express,MongoDB等:2020年完整的训练营 - 国外课栈​viadean.com高级Express - 国外课栈​viadean.com目前,所有已呈现的通信都是基于请求响应方…

java除号_Java的运算符

1.算数运算符 加(正号)  - 减(符号)  * 乘  / 除% 取模(取余)   自增  -- 自减号的几种作用:加法运算  表示为一个正数  还可以用来作字符串的拼接整数相除只能得到整数。如果想得到小数,必须把参与计算的数据变化为浮点类型的数据。自增和…

strace命令_在软件部署中使用 strace 进行调试

我最喜欢的用来解决“为什么这个软件无法在这台机器上运行?”这类问题的工具就是 strace。-- Simon Arneaud(作者)我的大部分工作都涉及到部署软件系统,这意味着我需要花费很多时间来解决以下问题:这个软件可以在原开发…

java 写文件filewriter_使用FileWriter写文件

package textMyself;//使用FileWriter写文件import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;public class text2 {public static void main(String[] args) {// TODO 自动生成的方法存根try {/** 先产…