IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python基础 - 办公自动化 -> 正文阅读

[Python知识库]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的用途。百分号编码中分为保留字符和非保留字符, 很明显, 所谓的保留字符就是有其特殊用途的, 编码时需要转换的; 非保留字符就是可以直接被使用的, 编码时不需要转换的。

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

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-10-19 11:50:09  更:2021-10-19 11:52:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 20:56:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码