Python中玩转EXCEL表格

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上拿去。
鸣谢:慕课网离岛教师教学、菜鸟网技术支持。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值