接上文Python开发从零开始-50.30-Office 文档处理,本文小编与大家分享 Python 处理 Office 文档的相关知识。
2)使用文本框
当预设版式无法满足布局需求(如需要在特定坐标添加注释、标签或多段不同样式的文本)时,可以使用文本框来添加文本内容。
① 自动形状对象及其通用属性
文本框是一种 pptx.shapes.autoshape.Shape 对象。Shape 对象继承自基类 pptx.shapes.baseBaseShape 对象,用于操作幻灯片中的几何图形(如矩形、圆形、箭头等)以及文本框。Shape 对象通常包含以下通用属性:
A、位置与尺寸
所有 Shape 对象都具备以下属性,单位通常为英寸 (Inches) 或厘米 (Cm),但在底层存储为 EMU (English Metric Units,英制度量单位)。
left:形状左边缘相对于幻灯片左边缘的距离;
top:形状上边缘相对于幻灯片上边缘的距离;
width:形状的宽度;
height:形状的高度;
rotation:旋转角度(度数)。
B、图形类型
用于判断形状的具体类型,以便进行针对性操作。
shape_type:返回形状类型的枚举值(MSO_SHAPE_TYPE)。常用枚举值如下:
AUTO_SHAPE: 自动形状(如矩形、圆),整数值 1;
CHART: 图表,整数值 5;
PICTURE: 图片,整数值 13;
PLACEHOLDER:占位符,整数值 14;
TEXT_BOX: 文本框,整数值 17;
TABLE: 表格,整数值 19。
name:形状的名称;
is_placeholder:布尔值,判断是否为占位符。
C、文本相关
如果形状包含文本(如文本框、占位符、带文本的几何图形),以下属性有效:
has_text_frame:布尔值,判断是否包含文本框架;
text_frame:TextFrame 对象,用于操作文本内容、段落和样式;
text:快捷属性,直接获取或设置形状的纯文本内容(会清除原有格式)。
D、视觉样式
fill:填充格式对象,可设置颜色、透明度、渐变等;
line:边框线条格式对象,可设置颜色、粗细、线型;
shadow:阴影效果对象。
② 添加文本框及设置文本
A、add_textbox() 方法
SlideShapes 对象的 add_textbox() 方法用于在幻灯片上添加一个自由位置的文本框。该方法原型为:
add_textbox(left, top, width, height) |
参数解释:
left:length 对象,左边距,单位通常使用英寸(Inches);
top: length对象,上边距,单位通常使用英寸(Inches);
width: 宽度,单位通常使用英寸(Inches);
height:高度,单位通常使用英寸(Inches);
返回值:Shape 对象;
pptx.util.Length 对象是 Inches、Emu、Cm、Mm 和 Pt 对象的基类。
B、Inches 对象
在 python-pptx 库中,pptx.util.Inches 对象用于尺寸单位转换。由于 PPT 文档内部使用 EMU作为底层存储单位,直接操作像素或英寸数值会导致精度丢失或兼容性问题,因此该库提供了 Inches 对象来将英寸值转换为 EMU 值。
创建 Inches 对象非常简单,只需传递英寸数值参数即可,例如:
from pptx.util import Inches# 创建 Inches 对象,英寸数值为 1left = Inches(1)
C、添加文本框和设置文本示例
下例将创建 PPT 文档,添加一个空白版式(Blank)的幻灯片,然后在幻灯片中添加文本框并设置文本:
from pptx import Presentationfrom pptx.util import Inches# 创建一个新 PPT 文档prs = Presentation()# 如果 PPT 文档中只有一个母版,可以直接获取该母版的版式集合layouts = prs.slide_layouts# 从版式集合中获取空白版式(Blank)layout = layouts.get_by_name('Blank')# 添加一个空白版式的新幻灯片slide = prs.slides.add_slide(layout)# 文本框的左边距left = Inches(1)# 文本框的上边距top = Inches(1)# 文本框的宽度width = Inches(6)# 文本框的高度height = Inches(2)# 在幻灯片中添加文本框textbox = slide.shapes.add_textbox(left, top, width, height)# 文本框的 text_frame 属性返回 TextFrame 对象text_frame = textbox.text_frame# 通过 TextFrame 对象向文本框中添加文本text_frame.text = "这是自定义文本框中的内容"# 保存 PPT 文档prs.save('example_text_add2.pptx')
代码执行后,生成的 PPT 文档内容如下图所示:

小编提示: 在需要突破版式限制或进行精细化排版时,可以使用自定义文本框。 文本框可以自由指定位置,默认无样式,需要手动设置或继承默认值。文本设置通常需要处理 text_frame 属性,以及段落和运行等。代码逻辑较复杂但布局灵活。 |
受文章篇幅所限,下文将继续介绍 Python 处理 Office 文件的相关知识。