Python小玩法,实现对Excel的控制,插入表格,发送邮件
导入模块
import xlrd
import xlsxwriter
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
打开excel表格,读取数据
data4.xlsx表格内容:
#读取EXCel表的数据
data=xlrd.open_workbook('data4.xlsx')
classinfo=[]
#定义变量抓取表内数据
for sheet in data.sheets():
dict={'name':sheet.name,'avgsalary':0}#班级信息
sum=0 #
print(sheet)
for i in range(0,sheet.nrows):#读取表内的列数
if i > 1:
sum+=float(sheet.cell(i,5).value)#得到所有薪资总和
dict['avgsalary']=sum/(sheet.nrows-2)
classinfo.append(dict)
print(classinfo)
写入表格数据
#2写入excel
workbook=xlsxwriter.Workbook('newinfo.xlsx')#创建工作表
sheet=workbook.add_worksheet()
#写入班级数据
nameinfo=[]#
salaryinfo=[]
for item in classinfo:
nameinfo.append(item['name'])
salaryinfo.append(item['avgsalary'])
sheet.write_column('A1', nameinfo)
sheet.write_column('B1', salaryinfo)
newinfo.xlsx数据表
插入图表数据
#插入图表
chart=workbook.add_chart({'type':'column'})
chart.set_title({'name':'平均就业薪资'})
chart.add_series({'name':'班级',
'categories':'Sheet1!$A$1:$A$3',
'values':['newsheet',4,2,6,2],
'values':'=sheet1!$B$1:$B$3',
'data_labels':{'value':True}
})#通过索引方式去获取
sheet.insert_chart('A7',chart)
workbook.close()
发送邮件数据
#5发送邮件
host_server='smtp.qq.com'
sender="247630676@qq.com"
code="#######"#QQ邮箱授权码,**用户自己去QQ邮箱开启,并发短信获取**
user1="yanbiaoyi@ehenp.com"
mail_title="!!1月份平均就业薪资"
mail_content="1月份平均就业薪资,请查收"
#抓取Excel数据包读取文件,另命名为data.xlsx数据进行发送。
attachment=MIMEApplication(open('newinfo.xlsx','rb').read())
attachment.add_header('Content-Disposition','attachment',filename='data.xlsx')#
#5smtp
smtp=smtplib.SMTP(host_server)
smtp.login(sender,code)
msg=MIMEMultipart()
msg['Subject']=mail_title
msg['From']=sender
msg['To']=user1
msg.attach(MIMEText(mail_content))
msg.attach(attachment)
smtp.sendmail(sender,user1,msg.as_string())
结果验证:
data.xlsx 数据包
总结:操作比较简单,注意for循环抓取的值,完整代码我后期传送到github上拿去。
鸣谢:慕课网离岛教师教学、菜鸟网技术支持。