1.python列表相关的使用
1.1 相关的简单操作
1.1.1 list集合相关操作
print("==============append======================")
name_list=['功夫熊猫','韩娇虎','跳跳猴']
print(name_list) # ['功夫熊猫', '韩娇虎', '跳跳猴']
name_list.append('师傅')
print(name_list)# ['功夫熊猫', '韩娇虎', '跳跳猴', '师傅']
print("==============extend======================")
name_list2=['功夫熊猫','韩娇虎','跳跳猴']
print(name_list2)#['功夫熊猫', '韩娇虎', '跳跳猴']
name_list2.extend(["白雪公主","青蛙王子"])
print(name_list2)#['功夫熊猫', '韩娇虎', '跳跳猴', '白雪公主', '青蛙王子']
print("==============insert======================")
name_list3=['功夫熊猫','韩娇虎','跳跳猴']
print(name_list3)##['功夫熊猫', '韩娇虎', '跳跳猴', '白雪公主', '青蛙王子']
name_list3.insert(1,"成龙")
print(name_list3)#['功夫熊猫', '成龙', '韩娇虎', '跳跳猴']
print("==============del======================")
name_list4=['功夫熊猫','韩娇虎','跳跳猴']
print(name_list4) #['功夫熊猫', '韩娇虎', '跳跳猴']
del name_list4[2]
print(name_list4) #['功夫熊猫', '韩娇虎']
#del name_list4
#print(name_list)
print("==============pop======================")
name_list5=['功夫熊猫','韩娇虎','跳跳猴']
print(name_list5) #['功夫熊猫', '韩娇虎', '跳跳猴']
name_list5.pop()
print(name_list5) #['功夫熊猫', '韩娇虎']
name_list5.pop(1)
print(name_list5)#['功夫熊猫']
print("==============remove======================")
name_list6=['功夫熊猫','韩娇虎','跳跳猴']
print(name_list6) #['功夫熊猫', '韩娇虎', '跳跳猴']
name_list6.remove("韩娇虎")
print(name_list6) #['功夫熊猫', '跳跳猴']
print("==============clear======================")
name_list7=['功夫熊猫','韩娇虎','跳跳猴']
print(name_list7)#['功夫熊猫', '韩娇虎', '跳跳猴']
name_list7.clear()
print(name_list7) #[]
print("==============修改======================")
name_list8=['功夫熊猫','韩娇虎','跳跳猴']
print(name_list8) #['功夫熊猫', '韩娇虎', '跳跳猴']
name_list8[1]="师傅"
print(name_list8) #['功夫熊猫', '师傅', '跳跳猴']
print("==============reverse======================")
name_list9=['功夫熊猫','韩娇虎','跳跳猴']
print(name_list9) #['功夫熊猫', '韩娇虎', '跳跳猴']
name_list9.reverse()
print(name_list9) #['跳跳猴', '韩娇虎', '功夫熊猫']
print("==============sort======================")
name_list10=['功夫熊猫','韩娇虎','跳跳猴']
print(name_list10)# ['功夫熊猫', '韩娇虎', '跳跳猴']
name_list10.sort()
print(name_list10) #['功夫熊猫', '跳跳猴', '韩娇虎']
print("==============in======================")
name_list11=['功夫熊猫','韩娇虎','跳跳猴']
print('功夫熊猫' in name_list11) #True
print('功夫熊猫2' in name_list11) #False
1.1.2 dict字典相关操作
print("==============字典的创建======================")
dict1={}
dict2=dict()
dict3={'name':'同学','name':'老师','name':'教授'}
print(type(dict1)) #<class 'dict'>
print(type(dict2)) #<class 'dict'>
print(type(dict3)) #<class 'dict'>
print("==============新增======================")
dict12={}
print(dict12) #{}
dict12['name']='白雪公主'
print(dict12) #{'name': '白雪公主'}
dict12['name']='白马王子'
print(dict12) #{'name': '白马王子'}
print("==============获取======================")
dict13={'name':'白雪公主'}
print(dict13.get("from")) # None
# print(dict13['from']) #报错
print("==============key value======================")
dict14={'name':'Nickel','age':'18','height':'18'}
print(dict14) #{'name': 'Nickel', 'age': '18', 'height': '18'}
print(dict14.keys()) #dict_keys(['name', 'age', 'height'])
print(dict14.values()) #dict_values(['Nickel', '18', '18'])
print("==============删除======================")
dict15={'name':'Nickel','age':'18','height':'18'}
print(dict15) #{'name': 'Nickel', 'age': '18', 'height': '18'}
del dict15['name']
print(dict15) #{'age': '18', 'height': '18'}
1.1.3 选择结构的使用
year=2021
print("========简单条件分支========")
if year>2021:
print("转眼间,2021就过去了")
else:
print("2021还在进行当中")
print("========多层条件分支========")
level=88
if level>90:
print("优秀")
elif level>80:
print("良好")
elif level>70:
print("中等")
elif level>60:
print("及格")
else:
print("不及格")
print("========嵌套条件分支========")
if year>2020:
level=88
if level>90:
print("优秀")
elif level>80:
print("良好")
elif level>70:
print("中等")
elif level>60:
print("及格")
else:
print("不及格")
else:
print("2021还在进行当中")
print("========三目运算符的使用========")
point=2
es="输入正确" if point==2 else "输入错误"
print(es)
1.2.python中的for循环和while循环
1.2.1 while循环的使用
print('早日学习,可以登上人生巅峰')
a=0
while a<10:
print('早日学习,可以登上人生巅峰')
a=a+1
print("任务结束")
1.2.2 for循环的使用
for i in 'python':
print(i)
for name in ['图图','壮壮','小美']:
print(name)
#打印1-100之间的数据
for i in range(1,101,1):
print(i)
1.2.3 嵌套for循环的使用
方式1
infos=[
['羊和狼','开心锤锤','动感超人'],
['孙悟空','哪吒传奇','大头儿子小头爸爸'],
['动物世界','星际大发现','宇宙大冒险'],
['平凡世界','关于中国人的教育','浅谈致富之路']
]
count =1
for info in infos:
print(f"周{count}的内容是:")
count+=1
for ins in info:
print(ins)
方式2
infos=[
['羊和狼','开心锤锤','动感超人'],
['孙悟空','哪吒传奇','大头儿子小头爸爸'],
['动物世界','星际大发现','宇宙大冒险'],
['平凡世界','关于中国人的教育','浅谈致富之路']
]
for i in range(len(infos)):
print(f"周{i+1}的内容是:")
for info in infos[i]:
print(info)
方式3
infos=[
['羊和狼','开心锤锤','动感超人'],
['孙悟空','哪吒传奇','大头儿子小头爸爸'],
['动物世界','星际大发现','宇宙大冒险'],
['平凡世界','关于中国人的教育','浅谈致富之路']
]
for i,info in enumerate(infos):
print(f"周{i+1}的内容是:")
for ins in info:
print(ins)
1.2.4 break 和continue的使用
1.break的使用方式
print('去逛街,买包~~')
i=2
a=0
while True:
print('这家没有喜欢的,去下一家')
a+=1
if i>3:
break
elif a==5:
break
print('这个包不错,买了~回家')
2.continue的使用方式
from random import randint
for i in range(10):
num=randint(0,10)
print(f"==========第{i}个剧,评分为:{num}")
print('点赞')
if num<8:
continue
print('收藏')
print('投币')
1.2.5 函数的使用
print("Hi,Nickel!!")
#函数没有参数
def fun1():
print("请记得给我点赞。")
fun1()
##函数传递两个参数
def fun2(a1,a2):
num=a1+a2
print(f"{a1}+{a2}={num}")
fun2(20,18)
###函数参数多个参数
def fun3(*args):
for i in args:
print(i)
fun3(1,2,3,4,5)
###函数参数多个参数
def fun4(**args):
print(f"传递的参数为{args.get('name1')}")
fun4(name1="小美",name2="小明")
#定义传递的参数的类型
def fun5(a:int,b:int):
print(a+b)
fun5(10,20)
#为参数设置默认值
def fun6(a:str,b='投币'):
print(f"请{a}并{b}")
fun6("点赞")
fun6("点赞","aaaaaaa")
#设置输出参数调换
def fun7(a:str,b='投币'):
print(f"请{a}并{b}")
fun7(a="点赞",b="投币")
fun7(a="投币",b="点赞")
#定义传递的参数的类型
def fun8(a:int,b:int):
return a+b
print(fun8(10,63))
1.2.6 对象的使用
class Person:
def __init__(self,name:str,sex:str='男',hobby:str='抽烟,喝酒,打豆豆') -> None:
self.name=name
self.sex=sex
self.hobby=hobby
def eat(slef):
print("干饭了,干饭了,~~~~~~")
def study(self,info:str):
print(f"努力学习:{info}")
def show_me(self):
return f"我叫{self.name},我喜欢:{self.hobby}"
p1=Person("Nickel")
print(p1.hobby)
print(p1.name)
p1.eat()
p1.study("Java")
print(p1.show_me())
1.2.7 模块的使用
1.模块的简单使用
import random # 随机函数的使用
print(random.randint(1,100))
from random import randint #form函数使用
print(randint(1,100))
import math #导入数学函数
print(math.sqrt(9))
import time #导入休眠效果
time.sleep(2)
print("我现在可以打印了")
from time import sleep as s #取别名
s(2)
print("我又可以打印了")
2.模块的高级使用
model1
#自定义方法
def test1(a:int,b:int):
return print(a+b)
if __name__== '__main__':
test1(1,2)
方法的引用
from model1 import test1
test1(73,25)
3.模块的工具的下载和使用
# pip install
#pip list
#pip uninstall
#Ctrl +~ window
#pip install matplotlib #绘画图表的工具
from matplotlib import pyplot as plt
plt.plot([1,2,8,5,6,2])
plt.show()
本地配置数据源的方法
1.在当前用户下建立pip文件夹
2.在pip文件夹下新建一个pip.ini文件
[global]
timeout=6000
index-url=https://pypi.tuna.tsinghua.edu.cn/simgle
trusted-host=pypi.tuna.tsinghia.edu.cn
1.3.python对文件的相关操作
1.3.1 获取相关的路径
# 相对路径
#绝对路径
import os
print(os.getcwd()) #获取当前工作目录
print(os.path.abspath("model1.py")) #获取文件的绝对路径
print(os.path.dirname("E:\Study\pythonCode\model1.py")) #获取文件所在的文件夹
print(os.path.dirname(r"\aaaaa\model1.py")) #获取上一层文件夹的位置
print(os.path.exists("E:\Study\pythonCode")) # true
print(os.path.exists(r"E:\Study\aaaaa")) #false
#分离最后一个文件和前面文件
print(os.path.split("E:\Study\pythonCode\model1.py")) #('E:\\Study\\pythonCode', 'model1.py')
print(os.path.split(r"E:\Study\aaaa")) ##('E:\\Study', 'aaaa')
print(os.path.splitext("E:\Study\pythonCode\model1.py")) #E:\Study\pythonCode\model1.py
print(os.path.splitext("E:\Study\pythonCode\model1.py")[1]) #.py
#判断是不是文件
print(os.path.isfile("E:\Study\pythonCode\model1.py")) #True
print(os.path.isfile("model1.py")) #True
print(os.path.isfile("E:\Study\pythonCode")) #False
#判断是不是文件夹
print(os.path.isdir("model1.py")) #False
print(os.path.isdir("E:\Study\pythonCode")) #True
#获取当前文件夹有什么文件
print(os.listdir("."))
1.3.2 文件和文件夹的操作
#创建文件夹和删除文件夹
import os
#os.makedirs("temp") #创建文件夹
# os.rmdir("temp") #删除文件夹
#创建文件
# f=open("aaa.py","w") #write
# f.write('Hello Python\n')
# f.write('abc\n')
# f.write("132\n")
# f.close()
# f=open("aaa.py","a") #append
# f.write('Hello Python 2\n')
# f.write('abc 2\n')
# f.write("132 2\n")
# f.close()
# with open("aaa.py","a") as f: #自动关闭流
# f.write('Hello Python 3\n')
# f.write('abc 3\n')
# f.write("132 3\n")
#读取内容
# with open("aaa.py","r") as f:
# #print( f.read()) #读取指定字节内容
# #print(f.readline()) #读取第一行 Hello Python
# print(f.readlines()) #读取所有行的数据 ['Hello Python\n', 'abc\n', '132\n', 'Hello Python 2\n', 'abc 2\n', '132 2\n', 'Hello Python 3\n', 'abc 3\n', '132 3\n']
#读取图片文件
# with open("1.jpg","rb") as f: #byte
# print(f.read())
#图片的赋值
f1=open("1.jpg",'rb')
f2=open("img.jpg","wb")
f2.write(f1.read())
f2.close()
f1.close()
1.4 python对EXCEL的相关操作
表示当前版本没有EXcel
**更改pip.ini文件
[global]
timeout = 60000
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
use-mirrors = true
mirrors = https://pypi.tuna.tsinghua.edu.cn
参考:https://blog.csdn.net/qq_41937076/article/details/88321759
1.4.1 下载Excel插件
pip install openpyxl
1.4.2 获取Excel的数据
from openpyxl import load_workbook
from openpyxl.workbook import workbook
#打开excel
def open():
wb=load_workbook("./DATA/2.xlsx")
sh1=wb.active
sh2=wb['Sheet1']
print(sh1==sh2)
#获取excel的名字
def show_sheets(excel_name:str):
wb=load_workbook(f"./DATA/{excel_name}")
names=wb.sheetnames
print(names)
#获取某个单元格的值:方法1
def get_one_value(excelName:str,c1:int,c2:int):
wb=load_workbook(f"./DATA/{excelName}")
sh=wb.active
name=sh.cell(c1,c2).value
print(name)
#获取某个单元格的值:方法2
def get_one_value2(excelName:str,location:str):
wb=load_workbook(f"./DATA/{excelName}")
sh=wb.active
name=sh[f"{location}"].value
print(name)
#获取某个范围内的数据
def get_range_value(excelName:str,range:str):
values=[]
wb=load_workbook(f"./DATA/{excelName}")
sh=wb.active
rangeSheet=sh[f"{range}"]
#print(rangeSheet)
for a in rangeSheet:
for d in a:
values.append(d.value)
print(values)
#获取所有的行数据
def get_all_values(excelName:str,):
values=[]
wb=load_workbook(f"./DATA/{excelName}")
sh=wb.active
for data in sh:
for d in data:
values.append(d.value)
print(values)
#open()
#show_sheets("2.xlsx")
#get_one_value("2.xlsx",1,1)
#get_one_value2("2.xlsx","A1")
#get_range_value("2.xlsx","A1:B2")
get_all_values("2.xlsx")
1.4.3Excel的数据的拆分
拆分前
拆分后
from openpyxl import load_workbook
wb=load_workbook('./DATA/all_vidio.xlsx')
sh=wb.active
data1=[]
data2=[]
for row in sh.rows:
print(type(row[3].value))
print(row[3].value)
num=row[3].value
if num>50:
data1.append(row)
else:
data2.append(row)
data1_sh=wb.create_sheet("大于50w")
data2_sh=wb.create_sheet("小于50w")
for d in data1:
temp_list=[]
for temp in d:
temp_list.append(temp.value)
data1_sh.append(temp_list)
for d in data2:
temp_list=[]
for temp in d:
temp_list.append(temp.value)
data2_sh.append(temp_list)
wb.save("./CREATED/text.xlsx")
1.4.4Excel的数据的合并
#操作excel
from openpyxl import load_workbook
from openpyxl.workbook.workbook import Workbook
#打开excel
wb=load_workbook("./DATA/text.xlsx")
#激活多个sheet
sh1=wb['大于50w']
sh2=wb['小于50w']
all=[] #存储所有的数据
#读取数据
for row in sh1.rows: #获取所有行
temp_list=[] #获取所有行
for cell in row: #获取所有列
print(cell.value) #获取单元格的值
temp_list.append(cell.value)
all.append(temp_list) #整合所有数据
for row in sh2.rows: #获取所有行
temp_list=[] #获取所有行
for cell in row: #获取所有列
print(cell.value) #获取单元格的值
temp_list.append(cell.value)
all.append(temp_list) #整合所有数据
#合并几个就读几个
#保存所有数据
wb=Workbook()
sh=wb.active
for row in all:
sh.append(row)
wb.save('./CREATED/test5.xlsx')
1.4.5 多个Excel的文件合并成为一个文件
文件合并之前
文件合并之后
代码
#引入包
from openpyxl import load_workbook
from openpyxl.workbook.workbook import Workbook
#打开excel《合并几个代开几个》
wb1=load_workbook("./DATA/video1.xlsx")
wb2=load_workbook("./DATA/video2.xlsx")
wb3=load_workbook("./DATA/video3.xlsx")
wb4=load_workbook("./DATA/video4.xlsx")
#激活工作薄
sh1=wb1["Sheet1"] # sh1=wb1.avtive
sh2=wb2["Sheet1"]
sh3=wb3["Sheet1"]
sh4=wb4["Sheet1"]
#定义变量存储所有数据
all=[]
#读取数据《读数据记得保存》
for row in sh1.rows:
temp_list=[]
for cell in row:
temp_list.append(cell.value)
all.append(temp_list)
for row in sh2.rows:
temp_list=[]
for cell in row:
temp_list.append(cell.value)
all.append(temp_list)
for row in sh3.rows:
temp_list=[]
for cell in row:
temp_list.append(cell.value)
all.append(temp_list)
for row in sh4.rows:
temp_list=[]
for cell in row:
temp_list.append(cell.value)
all.append(temp_list)
#保存数据
wb=Workbook()
sh=wb.active
for row in all:
sh.append(row)
wb.save('./CREATED/video.xlsx')
1.4.6 汇总excel中的数据
汇总之前
汇总之后
汇总代码
#引包
from openpyxl import load_workbook
#打开文件
wb=load_workbook('./DATA/sale.xlsx')
#激活sheet
sh=wb.active
all=[] #获取所有单元格数据
#读取数据
for row in sh.iter_rows(min_row=2,min_col=2):
temp_list=[]
for cell in row:
temp_list.append(cell.value) #获取每行数据
all.append(temp_list)
#汇总
all_count=[]
for row in all:
count=0
for n in row:
temp=str(n) #转成字符串,判断数字问题
if temp.isdigit(): #判断是否是数字
count+=n
all_count.append(count)
print(all_count)
rowMax=sh.max_row #获取最高行
colMax=sh.max_column #获取最高列
#添加汇总数据
num=2
sh.cell(1,colMax+1).value='汇总'
for val in all_count:
sh.cell(num,colMax+1).value=val
num+=1
#保存
wb.save("./CREATED/saleNew.xlsx")
1.4.7 python设置excel样式
设置解析
##创建excel文件
from openpyxl import Workbook
from openpyxl.styles import Font, colors,Alignment,PatternFill
wb=Workbook()
sh=wb.active
font=Font(name='黑体',size=30,color=colors.BLUE,bold=True,italic=True)
sh['B2']='hello'
sh['B2'].font=font
##设置单元格行宽和列宽
sh.row_dimensions[6].height = 30
sh.column_dimensions['C'].width = 41
sh['C6']='测试数据'
sh['C6'].alignment=Alignment(horizontal='right',vertical='center') #horizontal表示左右对齐 vertical表示上下对齐
sh['C6'].fill=PatternFill('solid','FFD39B') #设置背景颜色
wb.save('./CREATED/text8.xlsx')
设置销售文件案例
#创建销售文件
from openpyxl import Workbook
from openpyxl.styles import Font,Alignment,PatternFill,Border
wb=Workbook()
sh=wb.active
SaleDate=[
['月份','1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'],
['销售一组',57,149,105,51,116,131,126,148,56,53,130,86],
['销售二组',142,114,56,145,113,67,124,113,97,124,63,91],
['销售三组',62,125,76,95,118,127,100,117,121,86,131,59],
['销售四组',85,113,85,145,102,61,106,113,76,72,61,146],
['销售五组',137,100,74,103,136,71,129,121,50,88,124,126],]
#for i in range(0,13,1):
# sh.cell(i+1,1).value=month[i]
for i in range(1,6,1):
for j in range(1,13,1):
sh.cell(j,i).value= SaleDate[i-1][j-1]
for row in sh.rows:
for cell in row:
cell.font=Font(bold=True,color='FFFAFA')
cell.alignment=Alignment(horizontal='center',vertical='center')
cell.fill=PatternFill('solid','191970')
wb.save('./CREATED/homework1.xlsx')
1.5 经典案例
1.5.1 工资条
工资条模型
创建之后数据
代码
'''
工号 姓名 部门 基本工资 提成 加班工资 社保扣除 考勤扣除 应发工资 邮箱
10000 刘备 首领 8000 5000 3000 680 0 16680 398882433@qq.com
10001 关羽 将军 6000 4000 3000 680 0 13680 398882433@qq.com
10002 张飞 将军 6000 3500 5000 680 300 14880 262355@qq.com
10003 诸葛亮 军师 7000 3000 1000 680 600 11080 26565123@qq.com
10004 狗子 小兵 3000 500 1500 680 0 5680 79523231@qq.com
10005 蛋蛋 小兵 3000 400 1500 680 0 5580 566233@qq.com
'''
from openpyxl import load_workbook,Workbook
wb=load_workbook('./DATA/工资数据.xlsx')
sh=wb.active
salary=[]
title=[]
for i,rows in enumerate(sh.rows):
salary_temp=[]
for sheet in rows:
salary_temp.append(sheet.value)
if i==0:
title=salary_temp
else:
wb2=Workbook()
sh2=wb2.active
sh2.append(title)
sh2.append(salary_temp)
#print(f"./CREATED/{salary_temp[0]}-{salary_temp[1]}.xlsx")
wb2.save(f"./CREATED/{salary_temp[0]}-{salary_temp[1]}.xlsx")
1.5.2 加班时间统计
from openpyxl import Workbook,load_workbook
from datetime import date
def create_data():
wb=Workbook()
sh=wb.active
rows=[
['打卡时间','姓名','打卡时间'],
[date(2021,12,2),'吕小布','18:50'],
[date(2021,12,3),'张飞','18:40'],
[date(2021,12,4),'关羽','19:50'],
[date(2021,12,5),'吕小布','19:20'],
[date(2021,12,6),'张飞','19:10'],
[date(2021,12,7),'吕小布','18:30'],
[date(2021,12,8),'关羽','18:00']
]
for row in rows:
sh.append(row)
wb.save('./CREATED/打卡时间.xlsx')
def totail_having_time():
wb=load_workbook("./CREATED/打卡时间.xlsx")
sh=wb.active
date=[]
for i in range(2,sh.max_row+1):
temp_list=[]
for j in range(1,sh.max_column+1):
temp_list.append(sh.cell(i,j).value) #获取某个单元格数据sh.cell(i,j)
#统计的操作
h,m= temp_list[2].split(':')
full=int(h)*60+int(m)
rs=full-18*60
temp_list.append(rs)
temp_list[0]=temp_list[0].date()
date.append(temp_list)
new_wb=Workbook()
sh_new=new_wb.active
for row in date:
sh_new.append(row)
new_wb.save("./CREATED/加班时间.xlsx")
if __name__=='__main__':
#create_data()
totail_having_time()
1.5.3python通过qq邮箱发送消息
发送前
发送后
代码
from email import header
import smtplib
from email.mime.text import MIMEText
from email.header import Header
def send_simple():
#登录邮箱
smtp_obj=smtplib.SMTP("smtp.qq.com")
smtp_obj.login("921495759@qq.com","zgeozvmmagwabedf")
#编写内容
msg="This is email~ 你要的邮件来啦~"
msg_body=MIMEText(msg,'plain','utf-8')
msg_body['Subject']=Header('测试邮件','utf-8')
msg_body['From']=Header('测试部门','utf-8')
#发送
smtp_obj.sendmail('921495759@qq.com',['1665340048@qq.com'],msg_body.as_string())
def send_simple1():
#登录邮箱
smtp_obj=smtplib.SMTP("smtp.qq.com")
smtp_obj.login("921495759@qq.com","zgeozvmmagwabedf")
#编写内容
msg='''This is email~ 你要的邮件来啦
<h1>这是一个邮件</h1>
<p>测试一个邮件内容,内容是由HTML编写的</p>
<p><a href='http://www.baidu.com'>官网</a></P>
'''
msg_body=MIMEText(msg,'html','utf-8')
msg_body['Subject']=Header('测试邮件','utf-8')
msg_body['From']=Header('测试部门','utf-8')
#发送
smtp_obj.sendmail('921495759@qq.com',['1665340048@qq.com'],msg_body.as_string())
#send_simple()
send_simple1()
1.5.4python发送工资数据
'''
工号 姓名 部门 基本工资 提成 加班工资 社保扣除 考勤扣除 应发工资 邮箱
10000 刘备 首领 8000 5000 3000 680 0 16680 398882433@qq.com
10001 关羽 将军 6000 4000 3000 680 0 13680 398882433@qq.com
10002 张飞 将军 6000 3500 5000 680 300 14880 262355@qq.com
10003 诸葛亮 军师 7000 3000 1000 680 600 11080 26565123@qq.com
10004 狗子 小兵 3000 500 1500 680 0 5680 79523231@qq.com
10005 蛋蛋 小兵 3000 400 1500 680 0 5680 566233@qq.com
'''
#读取数据
from email import header
from openpyxl import load_workbook
#发送邮件
from email.mime.text import MIMEText
from email.header import Header
import smtplib
wb=load_workbook("./DATA/工资数据.xlsx")
sh=wb.active
title="<tr>"
for i,row in enumerate(sh.rows):
if i==0:
for cell in row:
title+=f'<td>{cell.value}</td>'
title+="</tr>"
else:
info="<tr>"
for cell in row:
info+=f'<td>{cell.value}</td>'
info+="</tr>"
name=row[i].value
msg=f'''
<h3>你好:{name}</h3>
<p>请查收本月工资信息详情</p>
<table border="1">
{title}
{info}
</table>
'''
msg_body=MIMEText(msg,"html","utf-8")
msg_body['From']=Header('首钢佩奇有限公司人事部','utf-8')
msg_body['Subject']=Header("钢佩奇有限公司工资条",'utf-8')
smtp_obj=smtplib.SMTP('smtp.qq.com')
smtp_obj.login('921495759@qq.com','zgeozvmmagwabedf')
smtp_obj.sendmail('921495759@qq.com',['1665340048@qq.com'],msg_body.as_string())
print(f'成功发送工资条,{name}')