Python-docx 读写 Word 文档:读取正文、表格文本信息、段落格式、字体格式等

本文介绍如何使用Python的docx模块读取Word文档,包括文档章节、段落文本、文字格式和表格信息。内容涵盖获取章节和页边距、段落文字和格式、以及表格样式和单元格数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python-docx 模块读写 Word 文档基础(三):读取文档文本信息、表格信息、段落格式、字体格式等

前言:

前两篇博客介绍了 Python 的 docx 模块对 Word 文档的写操作,这篇博客将介绍如何用 docx 模块读取已有 Word 文档中的信息。

本篇博客主要内容有:

1、获取文档的章节信息;
2、获取段落文本信息;
3、获取表格内文本信息;
4、获取文档内格式信息。

1、获取文档章节信息:

1、用docx模块获取已有的word文档对象:

from docx import Document

# Document 类,不仅可以新建word文档,也可以打开一个本地文档
doc = Document('test03.docx')  # 想获取的文档文件名,这里是相对路径。

用做示例的 test03.docx 文件截图如下:

在这里插入图片描述
文档中有两个章节共两页(一个章节一页),一个章节的页面为 A3 ,另一个为 A4。

2、获取文档章节信息:

# 获取文档所有章节
sections = doc.sections
"class Sections(Sequence):"
print(sections)
# <docx.section.Sections object at 0x000000000B2E1148>
# 查看章节数量
print(len(sections)) # 2

注意:
章节对象的概念虽然比段落对象大,章节对象可以设置本章节的页面大小页眉页脚等,在该章节的段落对象必须遵守该章节的设置。
但是又并不存在包含关系,也就是说不能通过章节对象获取到段落信息。

3、获取页边距等信息:

# 获取章节对象的页边距等信息
sec0 = sections[0]
"class Section(object):"
'''
官方解释:文档节,提供对节和页面设置的访问。
还提供对页眉和页脚的访问。
'''
print(sec0)
# <docx.section.Section object at 0x000000000B2D5708>
# 获取章节页面信息
# 获取页面边距值:(单位为像素)
print('左边距:',sec0.left_margin)
# 左边距: 914400
print('右边距:',sec0.right_margin)
# 右边距: 914400
print('上边距:',sec0.top_margin)
# 上边距: 1143000
print('下边距:',sec0.bottom_margin)
# 下边距: 1143000
print('页眉边距:',sec0.header_distance)
# 页眉边距: 540385
print('页脚边距:',sec0.footer_distance)
# 页脚边距: 629920
print('页面方向:',sec0.orientation)
# 页面方向: LANDSCAPE (1)
print('页面高度:',sec0.page_height)
# 页面高度: 10657205
print('页面宽度:',sec0.page_width)
<
Python中,`python-docx` 是一个用于处理Microsoft Word文档 (.docx)的库,它主要用于读取、创建和修改Word文档的内容。如果你想在Word文档中添加水印,`python-docx`本身并不直接支持这个功能,因为这是Word文档结构的一部分,通常需要通过Office应用或者一些专门的库来实现。 不过,你可以利用其他第三方库,比如 `python-docx-template` 或者结合 `reportlab` 来间接地模拟出类似的效果。例如,你可以在Word文档内容中插入文本框并填充半透明的文字作为水印。这种方法更偏向于生成预设样式而不是真正意义上的"水印",但可以达到类似视觉效果。 以下是使用 `python-docx` 和 `(reportlab)` 实现简单文字水印的一个示例: ```python from docx import Document from reportlab.pdfgen.canvas import Canvas from reportlab.lib.pagesizes import letter from reportlab.lib.units import inch def add_watermark(doc, watermark_text): # 首先打开一个新文档 doc = Document() # 创建PDF canvas,设置尺寸和背景透明度 c = Canvas(doc, pagesize=letter) c.setFillColorRGB(0.9, 0.9, 0.9) # 设置背景颜色为浅灰色 c.saveState() c.setFillAlpha(0.5) # 设置填充透明度 # 添加文字水印 textobject = c.beginText(1*inch, 10*inch) # 文字位置 textobject.textOut(watermark_text) c.drawCentredString(letter/2, 10*inch, watermark_text) c.restoreState() # 恢复到正常状态 # 将PDF数据保存到Word文档的一页上 doc.add_page_break() img = c.print_to_buffer() doc.add_picture(img, width=doc.width, height=doc.height) # 使用方法 add_watermark(doc, "Watermark Text") doc.save('output.docx') ``` 请注意,这只是一个基本示例,实际应用中你可能需要处理更多细节,比如水印的位置、大小调整等。此外,由于不是真正的Word水印,转换成PDF后再插入Word可能会有格式损失。
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值