python办公自动化------word文件的操作

一、 word文件的创建

需要安装包:python-docx

例1:创建word文件

python 复制代码
from docx import Document


# 创建doc对象
doc = Document()

# 指定路径下创建一个docx文件
doc.save('./dataFile/test1_doc.docx')

运行结果:

例2:word中添加内容

添加一级标题

python 复制代码
from docx import Document
# 导入段落
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
# 导入单位:Mm毫米,Inches英寸,Pt像素
from docx.shared import Mm, Inches, Pt

# 创建doc对象
doc = Document()
# 添加一级标题,0代表一级
title = doc.add_heading("2024年年终述职", 0)

# 设置段落格式(paragraph_format)对齐方式(alignment)为居中(WD_PARAGRAPH_ALIGNMENT.CENTER)
title.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER

# 指定路径下创建一个docx文件
doc.save('./dataFile/test1_doc.docx')

运行结果:

居中对齐、左对齐、右对齐

python 复制代码
# 设置段落格式(paragraph_format)对齐方式(alignment)为居中(WD_PARAGRAPH_ALIGNMENT.CENTER)
title.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
# 左对齐
title.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.LEFT
# 右对齐
title.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.RIGHT

添加章节list

python 复制代码
# 添加段落和内容
doc.add_paragraph('年终总结共包含三个部分')
# 添加列表
doc.add_paragraph('工作内容', style='List Number')
doc.add_paragraph('工作的不足', style='List Number')
doc.add_paragraph('工作计划', style='List Number')

运行结果:

添加每个章节的内容 :

python 复制代码
# 分别添加每个小点的内容
doc.add_heading('工作内容', 1)

oper_bug = 101
net_bug = 202
pro_bug = 303
stu_bug = 404
pg1 = doc.add_paragraph('主要包含项目:运维管理系统,共提交bug{:,}个。网管系统,共提交bug{:,}个。项目管理系统,共提交bug{:,}个。学生管理系统,共提交bug{:,}个。'.format(oper_bug,net_bug,pro_bug,stu_bug))

doc.add_heading('工作计划',1)
pg2 = doc.add_paragraph('本年度在复杂场景测试覆盖(如支付超时场景)和自动化测试框架维护上存在不足,导致部分版本回归测试周期较长。')

doc.add_heading('工作的不足', 1)
doc.add_paragraph('完善测试用例库,覆盖更多边界场景(如异常数据、并发操作)。', style='List Bullet')
doc.add_paragraph('引入"探索性测试"补充传统用例设计,增强对隐性需求的挖掘。', style='List Bullet')
doc.add_paragraph('定期开展缺陷复盘会议,分析Top 3高频缺陷类型并针对性优化用例。', style='List Bullet')

运行结果:

段落左侧缩进5毫米

python 复制代码
# 段落左侧缩进
pg1.paragraph_format.left_indent = Mm(5)

运行结果:

添加图片:

python 复制代码
# 添加图片
doc.add_paragraph('参考下图:')
doc.add_picture('./image/1.png', width=Inches(4.5))

运行结果:

添加表格,并向表格中添加数据:

方法一:

python 复制代码
# 添加表格
doc.add_heading('表格分析', 1)
# 两行三列
table1 = doc.add_table(1, 2)
# 第一行的所有列
cells = table1.rows[0].cells
# 一次向第一行的每个单元格赋值
cells[0].text = '项目名称'
cells[1].text = 'bug数量'

运行结果:

方法二:

通过循环向表格中注入数据

python 复制代码
# 表内的数据
records = [
    ['项目A', '101'],
    ['项目B', '202'],
    ['项目C', '303'],
    ['项目D', '404'],
    ['项目E', '505'],
    ['项目F', '606']
]
# 将表内的数据循环赋值给表
for name, count in records:
    cells = table1.add_row().cells
    cells[0].text = name
    cells[1].text = count

运行结果:

字体样式的设置:

python 复制代码
sign = doc.add_paragraph()
sign.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.RIGHT
# 加粗显示
sign.add_run("日期:").bold = True
sign.add_run("2024年12月31日")

sign = doc.add_paragraph()
sign.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.RIGHT
style = sign.add_run("姓名:张三")
# 设置字体样式
style.font.name = 'Times New Roman'
# 字体大小
style.font.size = Pt(16)
# 设置斜体
style.italic = True
# 设置下划线
style.underline = True
# 设置字体颜色
style.font.color.rgb = RGBColor(0, 255, 0)

运行结果:

强制增加一页

python 复制代码
# 强制增加一页
doc.add_page_break()

运行结果:

完整编码:

python 复制代码
from docx import Document

# 导入段落
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT

# 导入单位:Mm毫米,Inches英寸,Pt像素
from docx.shared import Mm, Inches, Pt, RGBColor

# 导入段落
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT

# 导入单位:Mm毫米,Inches英寸,Pt像素
from docx.shared import Mm, Inches, Pt

# 创建doc对象
doc = Document()
# 添加一级标题,0代表一级
title = doc.add_heading("2024年年终述职", 0)

# 设置段落格式(paragraph_format)对齐方式(alignment)为居中(WD_PARAGRAPH_ALIGNMENT.CENTER)
title.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
# # 左对齐
# title.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.LEFT
# # 右对齐
# title.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.RIGHT

# 添加段落和内容
doc.add_paragraph("年终总结共包含三个部分")
# 添加列表
doc.add_paragraph("工作内容", style="List Number")
doc.add_paragraph("工作的不足", style="List Number")
doc.add_paragraph("工作计划", style="List Number")

# 分别添加每个小点的内容
doc.add_heading("工作内容", 1)

oper_bug = 101
net_bug = 202
pro_bug = 303
stu_bug = 404
pg1 = doc.add_paragraph(
    "主要包含项目:运维管理系统,共提交bug{:,}个。网管系统,共提交bug{:,}个。项目管理系统,共提交bug{:,}个。学生管理系统,共提交bug{:,}个。".format(
        oper_bug, net_bug, pro_bug, stu_bug
    )
)
# 段落左侧缩进
pg1.paragraph_format.left_indent = Mm(5)

doc.add_heading("工作计划", 1)
pg2 = doc.add_paragraph(
    "本年度在复杂场景测试覆盖(如支付超时场景)和自动化测试框架维护上存在不足,导致部分版本回归测试周期较长。"
)
pg2.paragraph_format.left_indent = Mm(5)

# 不同格式的List
doc.add_heading("工作的不足", 1)
doc.add_paragraph(
    "完善测试用例库,覆盖更多边界场景(如异常数据、并发操作)。", style="List Bullet"
)
doc.add_paragraph(
    "引入"探索性测试"补充传统用例设计,增强对隐性需求的挖掘。", style="List Bullet"
)
doc.add_paragraph(
    "定期开展缺陷复盘会议,分析Top 3高频缺陷类型并针对性优化用例。", style="List Bullet"
)
# pg3.paragraph_format.left_indent = Mm(5)

# 添加图片
doc.add_paragraph("参考下图:")
doc.add_picture("./image/1.png", width=Inches(4.5))

# 添加表格
doc.add_heading("表格分析", 1)
# 两行三列
table1 = doc.add_table(1, 2)
# 第一行的所有列
cells = table1.rows[0].cells
# 一次向第一行的每个单元格赋值
cells[0].text = "项目名称"
cells[1].text = "bug数量"

# 表内的数据
records = [
    ["项目A", "101"],
    ["项目B", "202"],
    ["项目C", "303"],
    ["项目D", "404"],
    ["项目E", "505"],
    ["项目F", "606"],
]
# 将表内的数据循环赋值给表
for name, count in records:
    cells = table1.add_row().cells
    cells[0].text = name
    cells[1].text = count

sign = doc.add_paragraph()
sign = doc.add_paragraph()

# 强制增加一页
doc.add_page_break()

sign = doc.add_paragraph()
sign.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.RIGHT
# 加粗显示
sign.add_run("日期:").bold = True
sign.add_run("2024年12月31日")

sign = doc.add_paragraph()
sign.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.RIGHT
style = sign.add_run("姓名:张三")
# 设置字体样式
style.font.name = "Times New Roman"
# 字体大小
style.font.size = Pt(16)
# 设置斜体
style.italic = True
# 设置下划线
style.underline = True
# 设置字体颜色
style.font.color.rgb = RGBColor(0, 255, 0)

# 指定路径下创建一个docx文件
doc.save("./dataFile/test1_doc.docx")
相关推荐
DanCheng-studio4 分钟前
毕设项目分享 大数据B站数据分析可视化系统
python·毕业设计·毕设
外收内放13 分钟前
数据分析(jupyter与pandas初体验)
python·学习
花间相见29 分钟前
【计算基础|网络04】—— HTTP接口实战(下):接口测试、鉴权与跨域排错
java·linux·人工智能·后端·python·计算机网络·postman
慧都小项30 分钟前
Python 跨文件重构怎么验证?PyCharm 用法查找、重构预览与测试流程
python·重构·pycharm·单元测试
SEO_juper34 分钟前
2026年用Python批量审计XML Sitemap:揪出sitemap.xml中的“配置错误/死链/过期页“(附完整代码)
java·python·seo·外贸独立站·谷歌优化
钱栈up40 分钟前
自动化多平台发布:脚本报FAIL时用三个信号判断真实状态
python
余槐i40 分钟前
拆解 Agent 核心原理|从零动手实现简易 AI 智能体(三)
人工智能·python·fastapi·ai agent
程序员AlbertTu44 分钟前
# Mantissa 使用教程 — Python 版与 C++ 版
c++·python·数值运算
童园管理札记1 小时前
从政策驱动到课堂落地:2026年“人工智能+教育”全景解读与技术实践指南
人工智能·python·深度学习·职场和发展·学习方法
陈年老古董1 小时前
微博情感分析项目学习笔记
笔记·python·学习·机器学习·项目