一、简介
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_PARAGRAPHdoc = 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.CENTERdoc.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 Inchesdoc = 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 qndef add_hyperlink(paragraph, url, text):# 创建超链接元素part = paragraph.partr_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 = textrun.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 的操作 | 跨平台,支持多种格式。 |