栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python基础 - 办公自动化

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python基础 - 办公自动化

Python基础 - 办公自动化

openpyxl 库不兼容 office 2007 以前的版本,如果遇到了,可以使用 xlwt / xlrd / xlutils 进行读写。

官文网站:https://pypi.org/

1.自动化表格处理
  • 加载工作簿

    openpyxl.load_workbook(文件路径)

  • 获取工作表

    1. 变量名.active
    2. 变量名[‘工作表名’] # type: worksheet
  • 获取工作表属性

    1. sheet.max_row
    2. sheet.max_column
    3. sheet.dimensions
  • 遍历单元格获取单元格的值

    for row in (2, sheet.max_row + 1):
    	for col in (1, sheet.max_column + 1):
    		value = sheet.cell(row, clo).value
    
  • sheet[‘指定单元格’] = 值或函数

  • 变量名.save(保存路径)

  • 单元格格式改写

    1. 字体改写
    header_style = xlwt.XFStyle()
    pattern = xlwt.Pattern()
    pattern.pattern = xlwt.Pattern.SOLID_PATTERN
    # 0 - ⿊⾊、1 - ⽩⾊、2 - 红⾊、3 - 绿⾊、4 - 蓝⾊、5 - ⻩⾊、6 - 粉⾊、7 - ⻘⾊
    pattern.pattern_fore_colour = 5
    header_style.pattern = pattern
    titles = ('姓名', '语⽂', '数学', '英语')
    for index, title in enumerate(titles):
     sheet.write(0, index, title, header_style)
     font = xlwt.Font()
    # 字体名称, 字体应是电脑里有的字体
    font.name = '华⽂楷体'
    # 字体⼤⼩(20是基准单位,18表示18px)
    font.height = 20 * 18
    # 是否使⽤粗体
    font.bold = True
    # 是否使⽤斜体
    font.italic = False
    # 字体颜⾊
    font.colour_index = 1
    header_style.font = font
    align = xlwt.Alignment()
    # 垂直⽅向的对⻬⽅式
    align.vert = xlwt.Alignment.VERT_CENTER
    # ⽔平⽅向的对⻬⽅式
    align.horz = xlwt.Alignment.HORZ_CENTER
    header_style.alignment = align
    borders = xlwt.Borders()
    props = (
     ('top', 'top_colour'), ('right', 'right_colour'),
     ('bottom', 'bottom_colour'), ('left', 'left_colour')
    )
    # 通过循环对四个⽅向的边框样式及颜⾊进⾏设定
    for position, color in props:
     # 使⽤setattr内置函数动态给对象指定的属性赋值
     setattr(borders, position, xlwt.Borders.DASHED)
     setattr(borders, color, 5)
    header_style.borders = borders
    
    1. 单元格格式改写
    # 设置⾏⾼为40px
    sheet.row(0).set_style(xlwt.easyxf(f'font:height {20 * 40}'))
    titles = ('姓名', '语⽂', '数学', '英语')
    for index, title in enumerate(titles):
     # 设置列宽为200px
     sheet.col(index).width = 20 * 200
     # 设置单元格的数据和样式
     sheet.write(0, index, title, header_style)
    
2. 自动化邮件处理

在日常办公过程中,不可避免的是邮件交流,在Python的标准库中为我们提供了强大的邮件处理模块,不仅可以自动发送文本邮件,同时还具有定时发送、添加附件等能力。

在发送邮件时,需要通过 SMTP 协议与邮件服务器进行网络通信实现发送邮件的目标。在Python标准库中对SMTP进行可封装,我们只用通过创建对象,给对象发消息就可以实现。

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

# 创建SMTP_SSL对象
smtp_obj = smtplib.SMTP_SSL(host='smtp.126.com', port=465)
# 1. 登录授权
smtp_obj.login('jackfrued@126.com', 'PYNTEOLFBGAVJJKS')

m_part = MIMEMultipart()
# 发件人邮箱
m_part['From'] = 'jackfrued@126.com'
# 收件人邮箱
m_part['To'] = '957658@qq.com;luohao@1000phone.com'
# 抄送人邮箱
m_part['Cc'] = 'sasak@126.com'
# 邮件主题
m_part['Subject'] = 'Python办公自动化学习内容'

content = """
	hello! my friend!
"""
mime_text = MIMEText(content, 'plain', 'utf-8')
m_part.attach(mime_text)
# 添加附件
with open('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="Python-email-sms.pdf"'
    m_part.attach(pdf_file)

with open('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-stock.xlsx"'
    m_part.attach(excel_file)

# 2. 发送邮件
smtp_obj.sendmail(
    from_addr='jackfrued@126.com',
    to_addrs=['957658@qq.com', 'luohao@1000phone.com'],
    msg=m_part.as_string()
)
# 3. 结束会话
smtp_obj.quit()
  • base64 编码

    base64是一种基于64个可打印字符来表示二进制数据的表示方法。

    它是一种将二进制编码转换为可打印字符一种。它是MIME编码里面非常常见一种可逆转换二进制方法!现常用于电子邮件中,邮件类型声明如:Content-Transfer-Encoding: base64 !

    由于2的6次方等于64,所以每6个位为一个单元,对应某个可打印字符。三个字节有24个位元,可以对应4个base64单元,因此3个字节需要用4个base64单元来表示!如:MaN对应base64是:TW Fu ! 这64个可打印字符a-z,A-Z,0-9就占62字符,剩下2个字符不同系统可能使用不同,经常是:“+/”。base64编码后,文档大小为原先的4/3,里面所有字节(包括常见可打印字符)也编码了!

    编号字符编号字符编号字符
    0A16Q32g48w
    1B17R33h49x
    2C18S34i50y
    3D19T35j51z
    4E20U36k520
    5F21V37l531
    6G22W38m542
    7H23X39n553
    8I24Y40o564
    9J25Z41p575
    10K26a42q586
    11L27b43r597
    12M28c44s608
    13N29d45t619
    14O30e46u62+
    15P31f47v63/
  • base64 编码转换原理

    转换的时候,将三个byte的数据,先后放入一个24bit的缓冲区中,先来的byte占高位。数据不足3byte的话,于缓冲区中剩下的bit用0补足。然后,每次取出6个bit,按照其值选择的字符作为编码后的输出。不断进行,直到全部输入数据转换完成。

    如果最后剩下两个输入数据,在编码结果后加1个“=”;如果最后剩下一个输入数据,编码结果后加2个“=”;如果没有剩下任何数据,就什么都不要加,这样才可以保证资料还原的正确性。

  • 百分号编码

    使用这种编码的目的是为了传输, 类似UTF8的用途。百分号编码中分为保留字符和非保留字符, 很明显, 所谓的保留字符就是有其特殊用途的, 编码时需要转换的; 非保留字符就是可以直接被使用的, 编码时不需要转换的。

    非保留字符是很明确的, 所以在编码时, 只要判断哪些是非保留的, 剩下的就是保留的(需要转换的)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/331291.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号