导图社区 Python高效办公
Python高效办公复习的思维导图,包括openpyxl库、emali导入模块、登录邮箱、Python-docx模块等内容,本图知识梳理清楚,非常实用,值得收藏。
编辑于2021-10-24 20:01:47OA高效办公
openpyxl 库
工作簿(workbook) 读写
# 同时导入openpyxl模块中的load_workbook和Workbook方法 from openpyxl import load_workbook, Workbook
取值
# 打开工作簿 wb = load_workbook('财务报表.xlsx')
# 用 wb.active 打开工作表 ws = wb.active
定位
# 遍历从第2行开始的每行内容,values_only=True可以直接获取单元格的值 for row in ws.iter_rows(min_row=2, values_only=True):
# 遍历每一行内的单元格 for r in row: print(r)
min_row 起始行
max_row 终止行
min_col 起始列
max_col 终止列
values_only=False 单元格对象 values_only=True 单元格值
# 获取第一行 header = ws[1]
# 打印查看 print('表格第一行:') print(header)
# 获取第一列 column_a = ws['A']
# 打印查看 print('表格第一列:') print(column_a)
单元格(cell)
# 获取单元格C2 cell_c2 = ws['C2']
# 打印查看 print('单元格C2:') print(cell_c2)
写入
# 将new_list添加如工作表中 ws.append(new_list)
# 保存工作簿 wb.save('拆分表格.xlsx')
# 打印工作表名 print(ws.title)
# 修改工作表标题 ws.title = '工作表1'
工作簿(workbook) 修改样式
选择样式属性
导入模块 from openpyxl.styles import PatternFill()类【对表格样式的填充】, Alignment()类【对齐方式】, Side, Border
定义该属性的样式值
样式
填充颜色 PatternFill(patternType='', fgColor='')
# 定义表头颜色样式为橙色 header_fill = PatternFill(patternType='solid', fgColor='FF7F24') # 定义数据部分颜色样式为淡黄色 content_fill = PatternFill(patternType='solid', fgColor='FFFFE0') # 定义表尾颜色样式为淡桔红色 bottom_fill = PatternFill(patternType='solid', fgColor='EE9572')
对齐 Alignment(horizontal='', vertical='')
行高 ws.row_dimensions['行数'].height = 数值类型,设置行高。
行宽 ws.column_dimensions['列名'].width = 数值类型,设置列宽。
#例边框 Border(Side(style= , color= )
# 定义边样式为细条 side = Side('thin')
# 定义表头边框样式,有底边和右边 header_border = Border(bottom=side, right=side)
# 定义数据部分边框样式,有左边 content_border = Border(left=side)
color参数需要加入十六进制颜色码
位置
cell 行位置
表头top
底部bottom
左边left
右边right
style
thin(细条)
medium(中等)
double(双重)
cell 单元格
cell.value:获取单元格内的值;
水平
水平horizontal
左对齐left
居中center
右对齐right
垂直
垂直vertical
居中center
靠上top
靠下bottom
赋值修改(具体各个)单元格的样式值 # 用定义好的样式,去设置单元格
# 设置单元格填充颜色 cell.fill = # 使用定义好的样式
#填充颜色 cell.fill = header_fill
# 设置单元格对齐方式 cell.alignment = # 使用定义好的样式
# 设置单元格对齐方式 cell.alignment = align
# 设置单元格边框 cell.border = # 使用定义好的样式
# 设置单元格边框 cell.border = header_bord
导入模块
smtplib 模块和 email 模块 smtplib(获取简单邮件协议、发送、关闭)
登录邮箱
#实例化类 获取简单邮件协议对象 smtp = smtplib.SMTP_SSL(host, port)
参数1:host(服务器地址)
参数2:port(端口号)
#登录邮箱 smtp.login('邮箱地址',授权码)
1.邮箱地址
2. 邮箱授权码
新建并编辑邮件
新建 #实例化类 MIMEText(),得到一个简单邮件对象 email_content = MIMEText(_text, _subtype, _charset)
参数1:内容 _text
正文或附件对象
参数2:文本格式 _subtype
正文'plain'
附件'base64'
参数3:编码方式 _charset
'utf-8'
设置附件内容
读取附件内容赋给函数 如 file_data
with open('./04_月考勤表.xlsx', 'rb') as f: file_data = f.read()
设置内容类型为附件
# 设置内容类型为附件 attachment = MIMEText(file_data, 'base64', 'utf-8')
设置附件标题及文件类型:add_header() 使其能以邮件中附件的形式发送出去
# 设置附件标题以及文件类型 attachment.add_header('Content-Disposition', 'attachment', filename='04_月考勤表.xlsx')
固定参数:'Content-Disposition','attachment'
函数 文件名 :filename 自主命名
复合邮件
# 实例化复合邮件对象 msg = MIMEMultipart()
# 添加正文到复合邮件对象中 msg.attach(email_content)
# 添加附件到复合邮件对象中 msg.attach(attachment)
设置邮件信息
# 设置发送者信息 msg['From'] = '陈知枫'
# 设置接受者信息。 msg['To'] = '闪光科技的同事们'
# 设置邮件标题 msg['Subject'] = '04_月考勤表'
发送邮件并关闭邮箱服务
# 发送邮件 smtp.sendmail(from_addr, to_addrs, msg.as_string())
参数1:from_addr(发件邮箱地址)
参数2:to_addrs(收件邮箱地址)
参数3:msg.as_string()(邮件内容)
msg 是需要发送的邮件内容对象
as_string() 是将发送的信息 msg 变为字符串类型
# 关闭邮箱服务 smtp.quit()
python-docx 模块
文档(Document)
属性
paragraphs
# 获取文档的所有段落对象并返回一个列表 变量名 = Document对象.paragraphs
列表中的每一个元素都是一个 Paragraph 对象。 通过 Paragraph 对象的属性text来查看段落中的文字
段落(Block-level)
Paragraph 对象.runs 也会返回一个列表,列表中的每一个元素都是一个 Run 对象
文字(Inline-level)
Run 对象也有 text 属性,所以可以使用该属性查看其中的文字。
导入
# 导入模块 from docx import Document【打开/新建】 from docx.enum.text import WD_ALIGN_PARAGRAPH 【对齐方式】 from docx.shared import Pt 【设置字号】
打开
# 实例化Document对象 变量名 = Document(docx)
#新建 变量名 = Document()
写入
添加
add_
#添加标题(Heading 对象) Docuement 对象.add_heading()
#添加表格(Table 对象) Docuement 对象.add_table()
添加文字或图片
#添加段落 Document对象.add_paragraph(文字)
#添加文字 Paragraph 对象.add_run(文字)
Run 对象.add_tsxt(文字)
#添加图片 Run 对象.add_picture(path)
#添加文字 Document对象.add_paragraph(文字)
#设置对齐方式 paragraph_format.alignment
#左对齐(默认) Paragraph 对象.paragraph_format.alignment =WD_ALIGN_PARAGRAPH.LEFT
#右对齐 Paragraph 对象.paragraph_format.alignment =WD_ALIGN_PARAGRAPH.RIGHT
#居中对齐 Paragraph 对象.paragraph_format.alignment =WD_ALIGN_PARAGRAPH.CENTER
#两边对齐 Paragraph 对象.paragraph_format.alignment =WD_ALIGN_PARAGRAPH.JUESTIFY
字体样式 Run 对象的属性font
# 设置字体大小 Run 对象.font.size = Pt(14) # 字体大小
(42~6.5)
# 设置字体加粗 Run 对象.font.bold = True # 字体加粗
# 设置斜体 Run 对象.font.italic = True
# 设置下划线 Run 对象.font.underline = True
# 设置字体颜色 Run 对象.font.color.rgb = RGBColor(255,0,0)
保存
Docuemnt对象.save(path)