Python受欢迎的原因之一就是其计算生态丰富,据不完全统计,Python 目前为止有约13万+的第三方库。
本系列将会陆续整理分享一些有趣、有用的第三方库。
-
通过百度网盘获取:
链接:https://pan.baidu.com/s/1FSGLd7aI_UQlCQuovVHc_Q?pwd=mnsj
提取码:mnsj
-
前往GitHub获取:
https://github.com/returu/Python_Ecosystem
pip install python-docx
https://github.com/python-openxml/python-docx
python-docx库允许以编程方式生成、修改和读取Word文档的内容,包括标题、段落、列表、图片、表格和样式等。
-
创建一个新的 Word 文档:
Document()会基于默认的“模板”打开一个空白文档。
add_paragraph()方法会返回一个段落的引用,即新添加到文档末尾的段落。
from docx import Document
# 创建一个新的文档对象
document = Document()
# 添加一个段落
document.add_paragraph('这是一个新创建的 Word 文档。')
# 保存文档
document.save('new_document.docx')
-
添加标题:
默认情况下,add_heading()方法会添加一个顶级标题,即在Word中显示为“标题 1”的标题。当需要为子部分添加标题时,只需指定想要的级别,范围是 1 到 9 的整数。
from docx import Document
document = Document()
# 添加不同级别的标题
document.add_heading('一级标题', level=1)
document.add_heading('二级标题', level=2)
document.save('document_with_headings.docx')
-
添加列表:
添加列表分为无序列表和有序列表两种情况:
from docx import Document
document = Document()
# 添加无序列表
document.add_paragraph('无序列表项 1', style='List Bullet')
document.add_paragraph('无序列表项 2', style='List Bullet')
# 添加有序列表
document.add_paragraph('有序列表项 1', style='List Number')
document.add_paragraph('有序列表项 2', style='List Number')
document.save('document_with_lists.docx')
-
添加表格:
表格有许多属性和方法,需要通过访问这些属性来填充表格。
通常情况下,按行访问单元格会更方便,例如从数据源填充长度可变的表格时。表格的 .rows 属性提供了对单行的访问,每一行都有一个 .cells 属性。.cells 属性在 Row 和 Column 上都支持索引访问,就像列表一样。
from docx import Document
document = Document()
# 添加一个表格,2 行 3 列
table = document.add_table(rows=2, cols=3)
# 访问表格的单元格并添加内容
hdr_cells = table.rows[0].cells
hdr_cells[0].text = '姓名'
hdr_cells[1].text = '年龄'
hdr_cells[2].text = '性别'
row_cells = table.rows[1].cells
row_cells[0].text = '张三'
row_cells[1].text = '25'
row_cells[2].text = '男'
document.save('document_with_table.docx')
-
文本格式化:
from docx import Document
from docx.oxml.ns import qn
from docx.shared import Pt
from docx.shared import RGBColor
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
# 创建一个新的文档对象
document = Document()
# 设置中文字体时,需要明确指定东亚字符的字体
document.styles['Normal'].font.name = '微软雅黑'
document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), '微软雅黑')
# 添加标题
title = document.add_heading('格式化文本示例', level=1)
title.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER # 标题居中对齐
# 添加普通段落
paragraph = document.add_paragraph('这是一个普通的段落文本。')
# 添加带有不同样式的段落
styled_paragraph = document.add_paragraph()
# 加粗文字
bold_run = styled_paragraph.add_run('这是加粗的文字。')
bold_run.bold = True
# 斜体文字
italic_run = styled_paragraph.add_run(' 这是斜体的文字。')
italic_run.italic = True
# 下划线文字
underline_run = styled_paragraph.add_run(' 这是带有下划线的文字。')
underline_run.underline = True
# 添加不同颜色和大小的文字
colorful_paragraph = document.add_paragraph()
# 红色 20 磅文字
red_run = colorful_paragraph.add_run('这是红色 20 磅的文字。')
red_run.font.color.rgb = RGBColor(255, 0, 0)
red_run.font.size = Pt(20)
# 蓝色 16 磅文字
blue_run = colorful_paragraph.add_run(' 这是蓝色 16 磅的文字。')
blue_run.font.color.rgb = RGBColor(0, 0, 255)
blue_run.font.size = Pt(16)
# 保存文档
document.save('formatted_text_document.docx')
下面的代码演示了如何使用python-docx库创建一个包含段落、标题、分页符、表格和图片的Word文档,并对文档中的各种元素进行样式设置。
from docx import Document
# 基于默认的“模板”打开一个空白文档
document = Document()
# ====== 添加段落 ======
# 该方法会返回一个段落的引用,即新添加到文档末尾的段落
# 通过style参数设置段落样式,样式名称与Word用户界面(UI)中显示的完全一致
paragraph = document.add_paragraph('该方法会返回一个段落的引用,即新添加到文档末尾的段落', style='ListBullet')
# 也可以使用一个段落作为“光标”,在其正上方插入一个新的段落
prior_paragraph = paragraph.insert_paragraph_before('使用一个段落作为“光标”,在其正上方插入一个新的段落')
# 也可以在之后应用样式
paragraph.style = 'List Bullet'# 创建无序列表项
# 使用段落的 .add_run() 方法添加样式
paragraph.add_run('加粗文字').bold = True
paragraph.add_run('也可以从运行构建段落')
paragraph.add_run('斜体文字.').italic = True
# 通过对 Run 对象的引用设置样式
run = paragraph.add_run('通过对Run对象的引用设置样式')
from docx.oxml.ns import qn
run.font.name = '微软雅黑'# 设置西文字体
run._element.rPr.rFonts.set(qn('w:eastAsia'), '微软雅黑') # 设置中文字体
from docx.shared import RGBColor
run.font.color.rgb = RGBColor(255, 0, 0) # 设置字体颜色
from docx.shared import Pt
run.font.size = Pt(16) # 设置字体大小为 16 磅
# ======================
# ====== 添加标题 ======
# 添加不同级别的标题
document.add_heading('标题段落')
document.add_heading('二级标题', level=2)
# ======================
# ====== 添加分页符 ======
# 接下来的文本会出现在单独的一页上,即使当前页面尚未填满
document.add_page_break()
# ======================
# ====== 添加表格 ======
# 需要填入表格的数据
items = (
(2000, '1111', 'AAAA'),
(2001, '2222', 'BBBB'),
(2002, '3333', 'CCCC,DDDD'),
)
# 添加表格
table = document.add_table(1, 3)
# 填充表头行
heading_cells = table.rows[0].cells
heading_cells[0].text = '年份'
heading_cells[1].text = '数据'
heading_cells[2].text = '备注'
# 为每个项目添加数据行
for item in items:
cells = table.add_row().cells
cells[0].text = str(item[0])
cells[1].text = item[1]
cells[2].text = item[2]
# 设置表格样式
table.style = 'LightShading-Accent1'
# ======================
# ====== 添加图片======
# 添加一个段落并设置间距为 10
paragraph = document.add_paragraph()
paragraph.paragraph_format.space_before = Pt(10)
paragraph.paragraph_format.space_after = Pt(10)
# 加载图片文件,并指定其宽度或高度,使用方便的单位,如英寸Inches或厘米Cm
from docx.shared import Cm
document.add_picture('1.jpg', width=Cm(5.0))
# ======================
# 保存文档
document.save("demo.docx")
生成的word内容如下图所示:

更多内容可以前往官方文档查看:
https://python-docx.readthedocs.io/en/latest/


本篇文章来源于微信公众号: 码农设计师