#创建excel表格并写入数据
import xlwt
keys = [['1','小明','21'],['2','小红','19']] #定义需要写进表中得值
def Excel(keys):
book = xlwt.Workbook(encoding='utf-8',style_compression=0) #创建excel表格类型文件 这里是’utf-8’的形式,style_compression设置是否压缩,不是很常用,赋值为0表示不压缩。
sheet = book.add_sheet('自定义sheet名称',cell_overwrite_ok=True) #在excel表格类型文件中建立一张sheet表单 参数cell_overwrite_ok用于确认同一个cell单元是否可以重设值,这里赋值为True就表示可重设值
col = ('ID','名称','年龄') #自定义列名
le = len(col)
for y in range(0,le): #将列属性元组col写进sheet表单中
sheet.write(0,y,col[y]) #行,列,值
length = len(keys)
for y in range(0,length): #同上意思
data = keys[y] #依次取出列表得值
for i in range(0,le):
sheet.write(y+1,i,data[i]) #行+1 值需要从第二行开始写
book.save('/app/py/Public_Cloud.xls') #文件存储路径 xls名称自定义
#在表格创建多个sheet
import xlrd
from xlutils.copy import copy as xl_copy
a_list = ['','','','',''...] #按自己情况而定
def Excel1(a_list):
rb = xlrd.open_workbook('/app/py/Public_Cloud.xls', formatting_info=True) #打开现有表格
wb = xl_copy(rb) #复制一份
ali_Sheet = wb.add_sheet('自定义sheet名称') #新增一个sheet表单
col = ('实例ID','实例名称','运行状态','CPU','内存') #最好跟值得长度一样
le = len(col)
for y in range(0,le):
ali_Sheet.write(0,y,col[y])
length = len(a_list)
for y in range(0,length):
data = a_list[y]
for i in range(0,le):
ali_Sheet.write(y+1,i,data[i])
wb.save('/app/py/Public_Cloud.xls')
# 引入模块 发送邮件带xls文件附件
import logging
import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.mime.multipart import MIMEMultipart
def mail():
ret = True
#发信方的信息:发信邮箱,QQ邮箱授权码
from_addr = 'test@xxx.com'
password = 'pass密码'
#收信方邮箱 使用列表可一个或多个
to_addrs =[ 'h-xxx@xxx.com','h-xxx@xxx.com','h-xxx@xxx.com']
#抄送邮件
cc_list = ['xxx@xxx.com','xxx@xxx.com','xxx@xxx.com']
#发信服务器
smtp_server = 'email.smtp.com'
# 创建一个带附件的邮件实例
message=MIMEMultipart()
#邮箱正文内容,第一个参数为内容
text = '消息通知'
mail_inside = MIMEText(text,'plain','utf-8') #传入文本,文本类型(plain)、文本编码
#设置邮件头信息
message['From'] = Header(from_addr)
message['TO'] = Header(",".join(to_addrs)) #因为是多个邮件,所以需要用join
message['Cc'] = Header(",".join(cc_list))
message['Subject'] = Header('【主机备份巡检】公有云主机备份巡检')
message.attach(mail_inside) #传入邮件正文的内容
#构造附件xls附件1 open(xls文件位置)
attr1=MIMEText(open('/app/py/Public_Cloud.xls','rb').read(),'base64','utf-8')
attr1["content_Type"]='application/octet-stream'
attr1["Content-Disposition"] = 'attachment; filename="Public_Cloud.xls"' # 表示这是附件 filename可以自定义 邮件中显示的name
message.attach(attr1)
try:
#开启发信服务,这里使用的是非加密传输
server = smtplib.SMTP(smtp_server,25)
#登录发信邮箱
server.login(from_addr,password)
#发送邮件
server.sendmail(from_addr,to_addrs,message.as_string())
#关闭服务器
server.quit()
except smtplib.SMTPException as e:
print('error',e)
return ret
if __name__ == "__main__":
Excel(keys)
Excel1(a_list)
ret = mail()
if ret:
print("邮件发送成功,脚本运行结束.")
else:
print("邮件发送失败,脚本运行结束.")