Python读写word文档(.docx) python-docx的使用

一、简介

python-docx 是一个非常流行的第三方 Python 库,用于创建、修改和读取 Microsoft Word 文档(.docx 文件)。该库功能强大且易于使用,常用于自动化生成报告、格式化文档或从 Word 文档中提取信息。

二、常见用法

1. 安装

pip install python-docx

2. 创建新文档

可以从头开始创建一个 Word 文档,并添加文本、段落、标题等内容。

from docx import Document

# 创建一个新文档
doc = Document()

# 添加标题
doc.add_heading('这是一个标题', level=1)

# 添加段落
doc.add_paragraph('这是一个段落。')

# 保存文档
doc.save('example.docx')

2. 读取现有文档

可以打开一个已有的 Word 文档并读取其中的内容。

from docx import Document

# 打开文档
doc = Document('example.docx')

# 遍历段落
for para in doc.paragraphs:
    print(para.text)

# 遍历表格
for table in doc.tables:
    for row in table.rows:
        for cell in row.cells:
            print(cell.text)

3. 操作段落

可以自定义段落的格式,例如字体、对齐方式等。

from docx.shared import Pt, RGBColor
from docx.enum.text import WD_ALIGN_PARAGRAPH

doc = Document()

# 添加段落并修改格式
para = doc.add_paragraph('这是一个自定义段落。')
doc.add_paragraph('这是标题 1', style='Heading 1')
doc.add_paragraph('这是标题 2', style='Heading 2')

# 添加分页符
doc.paragraphs[-1].add_run().add_break(WD_BREAK.PAGE)

run = para.runs[0]
run.font.size = Pt(14)  # 字号
run.font.bold = True    # 加粗
run.font.color.rgb = RGBColor(255, 0, 0)  # 颜色为红色

# 段落居中
para.alignment = WD_ALIGN_PARAGRAPH.CENTER

doc.save('styled_paragraph.docx')

4. 插入表格

支持插入和操作表格。

doc = Document()

# 添加表格,2 行 2 列
table = doc.add_table(rows=2, cols=2)

# 填充数据
table.cell(0, 0).text = '单元格 1,1'
table.cell(0, 1).text = '单元格 1,2'
table.cell(1, 0).text = '单元格 2,1'
table.cell(1, 1).text = '单元格 2,2'

doc.save('table.docx')

5. 插入图片

支持将图片嵌入到 Word 文档中。

from docx.shared import Inches

doc = Document()

# 添加图片
doc.add_picture('example.jpg', width=Inches(2), height=Inches(2))

doc.save('image.docx')

6. 添加超链接

from docx.oxml import OxmlElement
from docx.oxml.ns import qn

def add_hyperlink(paragraph, url, text):
    # 创建超链接元素
    part = paragraph.part
    r_id = part.relate_to(url, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink", is_external=True)
    hyperlink = OxmlElement('w:hyperlink')
    hyperlink.set(qn('r:id'), r_id)
    
    # 创建文字元素
    run = OxmlElement('w:r')
    run_text = OxmlElement('w:t')
    run_text.text = text
    run.append(run_text)
    hyperlink.append(run)
    
    # 添加到段落中
    paragraph._p.append(hyperlink)

doc = Document()
p = doc.add_paragraph('点击访问: ')
add_hyperlink(p, 'https://www.example.com', '示例链接')

doc.save('hyperlink.docx')

三、其他类似库

除了 python-docx,还有一些其他类似的 Python 库,用于操作 Word 文档。

主要用途特点
python-docx读取/编辑 .docx 文档功能全面,适合常规操作。
pypandoc文档格式转换支持多种格式,需安装 Pandoc
docxtpl基于模板动态生成文档模板功能强大,适合生成报告。
pywin32操作原生 Word 功能仅适用于 Windows,依赖 Word 安装。
mammoth提取 Word 文本/HTML轻量级,专注于干净的内容提取。
comtypes低级别 COM 操作需要 Windows 环境,灵活但复杂。
uno基于 LibreOffice 的操作跨平台,支持多种格式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值