day21办公自动化(发送邮件及添加附件)

day21
"""
https://pypi.org/ python三方库的地址
openpyxl --> 不兼容office2007以前的版本
如果要读写excel 2007以前的版本 --> xlmt/xlrd
pip install xlmt xlrt xlutils 老版本的安装使用
aaa.xlsx --> aaa.rar --> 解归档 --> folder
"""

1.办公自动化

# 读取excel文件
import openpyxl
from openpyxl.styles import Alignment, Font, Border, Side
from openpyxl.worksheet.worksheet import Worksheet
from openpyxl.cell.cell import Cell
from datetime import datetime
from openpyxl.chart import LineChart, Reference
# isinstance() - 和type()一样,判断类型
def display(value, delim=' '):
    if isinstance(value, float):
        print(f'{value:10.2f}', end=delim)
    elif isinstance(value, datetime):
        print(value.strftime('%Y/%m/%d'), end=delim)
    elif isinstance(value, int):
        print(f'{value:>10d}')
    else:
        print(value, end=delim)

def main():
    # 1.加载工作簿(通过load_workbook函数加载excel工作簿获得Workbook对象)
    workbook = openpyxl.load_workbook(r'resources\阿里巴巴2020年股票数据.xlsx')
    # 2.获取工作表(获取Workbook对象,工作表)
    # 1)获取默认的工作表
    # sheet = workbook.active
    # 2)获取第一个工作表
    # sheet = workbook.worksheets[0]
    """
    p - property - 属性
    m - method - 方法
    """
    # 3)根据给出的表名获取工作表
    sheet = wokbook['Sheet1'] # type: Worksheet
    # 3.获取工作表的属性
    # 1)获取工作表的行数和列数
    print(sheet.max_row, sheet.max_column)
    # 2)获取工作表的范围
    print(sheet.dimensions)
    # 4.操作单元格
    # 1)获取单元格的值的两种方式
    # 技巧:代码后面的类型注释可以让Pycharm在后面的代码中为sheet对象提示属性和方法
    cell = sheet['E5'] # type: Cell
    # cell = sheet.cell(5, 5)
    print(cell.value)
    # 2)更改单元格的值
    #第一种
    cell.value = 200
    # 第二种
    sheet.cell(5, 5, 200)
    # 循环遍历所有单元格
    for row in range(2, sheet.max_row + 1):
        for col in range(1, sheet.max_column + 1):
            value = sheet.cell(row, col).value
            display(value)
        print()
    
    # 6.公式计算
    # sheet['E256'] = '=average(e2:e255)'
    # sheet['F256'] = '=sum(f2:f255)'
    cell = sheet['E256']
    cell.value = '我爱你中国'
    # 对齐方式(horizontal : 水平(left/right), vertical: 垂直(top/bottom))
    cell.alignment = Alignment(horizontal='center', vertical='center')
    #字体(name:系统上有的字体的名字)
    cell.font = Font(name='华文楷体', size=20, color='330099')
    # 边框
    side = Side(color='ff6600', style='mediumDashed')
    cell.border = Border(left=side, right=side, top=side, bottom=side)
    # 行高和列宽(获取对应的行再指定行高,同理,列也一样)
    sheet.row_dimensions[256].hight = 50
    sheet.column_dimensions['E'].width = 35
    # 7.图表操作(如折线图)
    # 绘制折线图
    # 创建图表对象
    c1 = LineChart()
    c1.title = '一月份收盘价和开盘价'
    c1.add_data(data, titles_from_data=True)
    # 设置横轴
    cats = Reference(sheet, min_col=4, min_row=1, max_col=5, max_row=23)
    c1.set_categories(cats)
    # 给数据系列设置样式
    s1 = c1.series[0]
    s1.marker.symbol = 'triangle'
    # 填充色
    s1.marker.graphicalProperties.solidFfill='CC0099'
    # 设置边框色
    s1.marker.graphicalProperties.line.solidFill = '0000ff'
    # 光滑曲线
    s1.smooth = True
    # 将图表添加到工作表
    sheet.add_chart(c1, 'A258')
    # 保存工作簿
    workbook.save(r'resources\阿里巴巴2020年股票数据.xlsx')
    
if __name__ == '__main__':
    main()
    

2.用python发送邮件

"""
HTTP
邮件服务器 --> 自己搭建 / 买三方邮件服务
SMTP --> Simple Mail Transfer Protocol - 简单邮件传输协议 --> 跟你的邮件服务器进行网络通信
Python标准库已经对SMTP进行了封装,我们主要通过创建对象,给对象发消息的方式就可以完成邮件的发送
smtplib模块 --> SMTP_SSL --> login() / sendmail() /quit()

POP3 --> Post Office Protocol version 3
IMAP --> Internet Mail Access Protocol
邮件服务器 : smtp.qq.com 端口 :465 / 25
账号:邮箱账号(发件人)
授权码
MIME --> Multi-purpose Internet Mail Extension - 多用途Internet邮件扩展
--> text / html - 页面
--> image/png
--> image/gif
--> audio/mp3
--> video/mp4

MIMEMultipart --> attach --> 添加文本、附件等其他内容
MIMEText --> 可以用来封装文本内容、也可以封装二进制数据(需要经过BASE64编码处理)

国内短信平台注册账号:螺丝帽、SendCloud、云片短信、互亿无线、网易云信
"""
# 创建SMTP_SSL对象(host=邮件服务器地址,port=安全的SMTP默认465端口)
smtp_obj = smtplib.SMTP_SSL(host='smtp.qq.com', port=465)
# 1.登录授权 - smtp_obj.login(用户名, 授权码) 
smtp_obj.login('xxxxx@qq.com', 'vrelfxqzeruwcjfb')
content = """在前⾯的课程中,我们已经教会⼤家如何⽤Python程序⾃动的⽣成Excel、Word、PDF⽂档,接下来我们还可以更
进⼀步,就是通过邮件将⽣成好的⽂档发送给指定的收件⼈,然后⽤短信告知对⽅我们发出了邮件。这些事情利⽤Python程序也可以轻松愉快的解决。"""
# 邮件的主体内容通过MIMEText对象构造
mine_text = MIMEText(content, 'plain', 'utf-8')  # plain纯文本文件
mime_text['From'] = 'xxxxxx@qq.com'  # 邮件发送者
mime_text['To'] = 'xxxxxxx@qq.com;xxxxxxx@qq.com'
# mime_text['Cc'] = '...;...;...'   # 抄送人
mime_text['Subject'] = 'Python办公自动化学习内容'  # 邮件主题
# 2.发送邮件
# sendmail方法的三个重要参数
# from_addr - 发件人。跟上面的From保持一致
# to_addrs - 收件人,可以是多个,跟上面的To保持一致
# msg - 邮件内容
smtp_obj.sendmail(
			from_addr='xxxxxx@qq.com',
    		to_addrs=['xxxxxx@qq.com','xxxxxx@qq.com'],
    		msg=mime_text.as_string()
)
# 3.结束会话
smtp_obj.quit()
# 邮件发送(添加附件)
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

smtp_obj = smtplib.SMTP_SSL(host='smtp.qq.com', port=465)
smtp_obj.login('xxxxxx@qq.com', 'vrelfxqzeruwcjfb')
content = """在前⾯的课程中,我们已经教会⼤家如何⽤Python程序⾃动的⽣成Excel、Word、PDF⽂档,接下来我们还可以更
进⼀步,就是通过邮件将⽣成好的⽂档发送给指定的收件⼈,然后⽤短信告知对⽅我们发出了邮件。这些事情利⽤
Python程序也可以轻松愉快的解决。"""
# 邮件的主体内容通过MIMEText对象构造
m_part = MIMEMultipart()
m_part['From'] = 'xxxxxx@qq.com'
m_part['To'] = 'xxxxxxx@qq.com;xxxxxx@qq.com'
m_part['Subject'] = 'python办公自动化学习内容'
# 文件内容
mime_text = MIMEText(content, 'plain', 'utf-8')
m_part.attach(mime_text)
with open(r'resources\用python发送邮件和短信.pdf', 'rb') as file:
    pdf_file = MIMEText(file.read(), 'base64', 'utf-8')
    # 设置内容类型
    pdf_file['content-type'] = 'application/pdf'
    # 设置内容的处置方式(可下载的附件)
    pdf_file['content-disposition'] = 'attachment; filename="aaa.pdf"'
    m_part.attach(pdf_file)

with open(r'resources\阿里巴巴2020年股票数据.xlsx', 'rb') as file:
    excel_file = MIMEText(file.read(), 'base64', 'utf-8')
    excel_file['content-type'] = 'application/vnd.ms-excel'
    excel_file['content-disposition'] = 'attachment; filename="alibaba.xlsx"'
    m_part.attach(excel_file)
    

smtp_obj.sendmail(
    from_addr='xxxxxx@qq.com',
    to_addrs=['xxxxxx@qq.com', 'xxxxxx@qq.com'],
    msg=m_part.as_string()

)
smtp_obj.quit()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值