跳至主要內容

Python python-docx使用

周子力大约 4 分钟教学文档Python

Python Python-docx使用

1.Python-docx简介

Microsoft Word是最常用的文档处理工具之一,但有时需要以编程方式生成或修改Word文档。Python中有一个python-docx的库,它允许创建、修改和操作Word文档。

本文将详细介绍python-docx库的用法,包括如何创建文档、添加文本、格式化文本、插入表格和图片等。

API文档参考open in new window

2.python-docx安装

pip install python-docx
pip install  -i https://pypi.tuna.tsinghua.edu.cn/simple python-docx 

3.python-docx使用-写

3.1 创建一个Word文档

from docx import Document  #导入包
doc = Document() #创建一个Document对象

3.2 添加标题和段落

#添加标题
doc.add_heading('网安文档',0)

#添加段落
doc.add_paragraph('我是曲师大网络空间安全学学院学生')

#添加段落中的一个节段
p=doc.add_paragraph()
p.add_run('这是一个节段')
picture 1
picture 1

(1)文档对象(Document):Document对象是Python-docx库的核心,它代表了一个完整的Word文档。通过Document对象,可以访问和修改文档中的其他部分,如段落、表格、图片等。 (2)段落(Paragraph):段落是文档中最基本的文本组织单位。每个Paragraph对象代表文档中的一个段落。通过它可以获取和设置段落的文本内容、样式(如字体、字号、颜色等)以及格式(如对齐方式、缩进、间距等)。 (3)文本(Run):在Python-docx中,Run对象表示具有相同格式的连续文本序列。一个段落可以包含多个运行,每个运行可以有不同的样式和格式。通过Run对象,你可以获取和设置文本的格式和样式,如字体、字号、颜色、粗体、斜体等。 (4)表格(Table):表格是文档中用于组织数据的结构。每个Table对象代表一个表格,包含行(Row)和单元格(Cell)。通过表格对象,你可以获取和设置表格的样式、行高、列宽以及单元格的内容。 (5)图片(InlineShape):InlineShape对象用于表示文档中的内联形状。通过遍历文档中的InlineShape对象,你可以找到并处理文档中的图片,如获取图片的路径、大小等信息。 (6)节(Section):节是文档中的一个逻辑部分,通常用于控制页面设置(如页边距、纸张大小等)和页眉页脚的显示。通过Document.sections属性,你可以获取文档中的所有节,并设置每节的属性。 (7)页眉和页脚(Header 和 Footer):页眉和页脚分别用于在文档的每一页的顶部和底部显示相同的内容。通过Section对象的header和footer属性,你可以获取和设置文档的页眉和页脚内容。

picture 0
picture 0

3.3 格式化文本

python-docx还允许对文本进行格式化,比如设置字体、颜色、大小和样式。

from docx.shared import Pt
from docx.oxml.ns import qn
from docx.shared import RGBColor

# 创建一个段落
p = doc.add_paragraph()

# 添加文本
p.add_run('这是加粗的文本。').bold = True
p.add_run('这是斜体的文本。').italic = True

# 设置字体大小和颜色
run = p.add_run('这是红色的文本。')
run.font.size = Pt(14)
run.font.color.rgb = RGBColor(255,0,0)

# 添加下划线
run = p.add_run('这是带下划线的文本。')
run.underline = True

属性描述
bold文本以粗体出现
italic文本以斜体出现
underline文本带下划线
strike文本带删除线
double_strike文本带双删除线
all_caps文本以大写首字母出现
small_caps文本以大写首字母出现,小写字母小两个点
shadow文本带阴影
outline文本以轮廓线出现,而不是实心
rtl文本从右至左书写
imprint文本以刻入页面的方式出现
emboss文本以凸出页面的方式出现

3.4 插入表格(add_table)

from docx.oxml.ns import qn
from docx.shared import Inches

# 创建一个表格
table = doc.add_table(rows=3, cols=3)

# 设置表格样式
table.style = 'Table Grid'

# 填充表格数据
for row in table.rows:
    for cell in row.cells:
        cell.text = '单元格内容'

# 合并单元格
table.cell(0, 0).merge(table.cell(1, 1))

3.5 插入图片

要插入图片,使用add_picture方法。确保图片文件存在于相应的路径

from docx.shared import Inches

#插入图片
doc.add_picture('example.png', width=Inches(4), height=Inches(3))

3.6 保存文档

当完成文档的创建和编辑后,使用save方法将文档保存到磁盘

doc.save('mydoc.docx')

4.python-docx使用-读

4.1 读取文档

# coding:utf-8

import os
from docx import Document

path = os.path.join(os.getcwd(), 'test_file/文本.docx')
print("\'文本.docx\' 的路径为:", path)     # 调试路径

doc = Document(path)

for p in doc.paragraphs:
    print(p.text)

4.2 读取文档中表格内容

# coding:utf-8

import os
from docx import Document

path = os.path.join(os.getcwd(), 'test_file/文本.docx')
print("\'文本.docx\' 的路径为:", path)     # 调试路径

doc = Document(path)

# for p in doc.paragraphs:
#     print(p.text)

for t in doc.tables:            # for 循环获取表格对象
    for row in t.rows:          # 获取每一行
        row_str = []
        for cell in row.cells:    # 获取每一行单独的小表格,然后将其内容拼接起来;拼接完成之后再第二个for循环中打印出来
            row_str.append(cell.text)
        print(row_str)
        
# 也可以通过 "columns" 获取表格中的列的内容,可以自己尝试一下

参考:

https://zhuanlan.zhihu.com/p/667184141

上次编辑于:
贡献者: zilizhou