Python在Word中进行图片添加、替换和删除操作

 更新时间:2025年03月08日 08:35:42   作者:Eiceblue  
通过Python编程实现Word文档中图片的动态管理,可精准实现图片的插入定位、条件化替换及冗余元素删除,下面就跟随小编来看看具体实现代码吧

通过Python编程实现Word文档中图片的动态管理,可精准实现图片的插入定位、条件化替换及冗余元素删除,尤其适用于需要定期生成标准化Word文档。这种自动化方案不仅显著降低人工操作导致的格式错位、版本混乱等风险,还能通过API接口与数据库、图像处理系统无缝集成,为构建端到端的智能文档生成体系奠定基础。本文将介绍如何使用Python在Word文档中添加、替换和删除图片。

本文所使用的方法需要用到免费的Free Spire.Doc for Python,PyPI:pip install spire.doc

用Python插入图片到Word文档

我们可以通过库中提供的Paragraph.AppendPicture(string: fileName)方法从指定路径插入图片到Word文档中的指定段落,并可使用DocPicture类下的属性对图像的大小、位置和文字环绕方式等进行设置。以下是操作步骤:

1.导入所需模块。

2.创建Document对象,从而新建Word文档。

3.使用Document.AddSection()方法在文档中添加节,并设置格式。

4.使用Section.AddParagraph()方法在节中添加段落,使用Paragraph.AppendText()方法在段落中添加文本,并设置格式。

5.使用Paragraph.AppendPicture()方法在段落中添加图片。

6.使用DocPicture类下的属性设置图片属性:

  • 使用Width和Height属性设置图片大小。
  • 使用HorizontalPosition和VerticalPosition属性设置图片的位置。
  • 使用TextWrappingStyle属性设置图片的文字环绕方式。

7.使用Document.SaveToFile()方法保存文档。

8.释放资源。

代码示例:

from spire.doc import Document, TextWrappingStyle, FileFormat

# 创建Document对象,从而新建Word文档
doc = Document()

# 在文档中添加一个节,并设置页边距
section = doc.AddSection()
section.PageSetup.Margins.All = 72

# 在节中添加段落,在段落中添加文本
para = section.AddParagraph()
textRange = para.AppendText("Document Introduction")
textRange.CharacterFormat.FontName = "Arial"
textRange.CharacterFormat.FontSize = 16
textRange.CharacterFormat.Bold = True

# 添加段落,并添加图片到段落中
para1 = section.AddParagraph()
pic = para1.AppendPicture("Word.png")

# 设置图片尺寸
pic.Width = 64
pic.Height = 64

# 设置图片位置(可选)
pic.HorizontalPosition = 360
pic.VerticalPosition = 10

# 设置图片文本环绕方式
pic.TextWrappingStyle = TextWrappingStyle.Square

# 添加文本并设置格式
textRange2 = para1.AppendText("This document serves as a structured repository of critical information, designed to facilitate clear communication, collaborative workflows, and long-term knowledge retention. Its architecture prioritizes accessibility, with a navigable hierarchy of headings, cross-referenced sections, and embedded metadata to streamline information retrieval.")
textRange2.CharacterFormat.FontName = "Arial"
textRange2.CharacterFormat.FontSize = 12

# 保存文档
doc.SaveToFile("output/AddPicToWord.docx", FileFormat.Docx2019)
doc.Dispose()

结果文档

用Python替换Word文档中的图片为新的图片

我们可以通过判断段落的各个子对象的DocumentObjectType属性是否为DocumentObjectType.Picture来找出文档中的所有图片。然后,我们可以将图片子对象转换为DocPicture,再使用DocPicture.LoadImage()方法使用指定的图片替换原图片。替换后的图片将保留原图片的位置和文本环绕方式属性,图片大小可设置为原图片的大小。以下是操作步骤:

1.导入所需模块。

2.创建Document对象,使用Document.LoadFromFile()方法载入Word文档。

3.依次遍历文档中的节、节中的段落以及段落中的子对象,判断每个子对象的DocumentObjectType属性是否为DocumentObjectType.Picture,将判断成功的对象添加到列表中。

4.将图片子对象转换为DocPicture,再使用DocPicture.LoadImage()方法使用指定的图片替换原图片。

5.使用Document.SaveToFile()方法保存文档。

6.释放资源。

代码示例:

from spire.doc import Document, DocumentObjectType, DocPicture

# 创建Document对象
doc = Document()

# 加载Word文档
doc.LoadFromFile("output/AddPicToWord.docx")

# 创建一个列表来存储图片
pictures = []

# 遍历文档中的所有节
for i in range(doc.Sections.Count):
    sec = doc.Sections.get_Item(i)

    # 遍历每一节中的所有段落
    for j in range(sec.Paragraphs.Count):
        para = sec.Paragraphs.get_Item(j)

        # 遍历每个段落中的所有子对象
        for k in range(para.ChildObjects.Count):
            docObj = para.ChildObjects.get_Item(k)

            # 查找图片并将其添加到列表中
            if docObj.DocumentObjectType == DocumentObjectType.Picture:
                pictures.append(docObj)

# 用新图片替换列表中的第一张图片
picture = DocPicture(pictures[0])
width = picture.Width
height = picture.Height
picture.LoadImage("NewWord.png")

# 修改图片的尺寸
picture.Width = width
picture.Height = height

# 保存结果文档
doc.SaveToFile("output/ReplaceWordImage.docx")
doc.Close()

结果文档

用Python替换Word文档中的图片为文本

我们还可以在找出图片子对象后,使用Paragraph.ChildObjects.Insert(Index, TextRange)方法在其位置插入文本,并使用Paragraph.ChildObjects.Remove()方法将图片子对象删除,从而实现图片到文本的替换。以下是操作步骤:

1.导入所需模块。

2.创建Document对象,使用Document.LoadFromFile()方法载入Word文档。

3.依次遍历文档中的节、节中的段落以及段落中的子对象,判断每个子对象的DocumentObjectType属性是否为DocumentObjectType.Picture,将判断成功的对象添加到列表中。

4.通过创建TextRange对象创建文本,设置文字及其格式。

5.使用Paragraph.ChildObjects.IndexOf()方法获取图片子对象在段落中的索引。

6.使用Paragraph.ChildObjects.Insert()方法将文本插入到段落中相应位置。

7.使用Paragraph.ChildObjects.Remove()方法删除图片子对象。

8.使用Document.SaveToFile()方法保存文档。

9.释放资源。

代码示例:

from spire.doc import Document, DocumentObjectType, TextRange, Color

# 创建Document对象
doc = Document()

# 加载Word文档
doc.LoadFromFile("output/AddPicToWord.docx")

# 遍历文档中的所有节
for k in range(doc.Sections.Count):
    sec = doc.Sections.get_Item(k)

    # 遍历每一节中的所有段落
    for m in range(sec.Paragraphs.Count):
        para = sec.Paragraphs.get_Item(m)

        # 创建一个列表来存储图片
        pictures = []

        # 查找图片并将其添加到列表中
        for x in range(para.ChildObjects.Count):
            docObj = para.ChildObjects.get_Item(x)
            if docObj.DocumentObjectType == DocumentObjectType.Picture:
                pictures.append(docObj)

        # 遍历列表中的所有图片,并用文本替换它们
        for pic in pictures:
            # 获取图片的索引位置
            index = para.ChildObjects.IndexOf(pic)
            # 创建一个TextRange对象
            textRange = TextRange(doc)
            textRange.Text = "Word Document "
            textRange.CharacterFormat.FontName = "Arial"
            textRange.CharacterFormat.FontSize = 20
            textRange.CharacterFormat.TextColor = Color.get_Red()
            # 将文本插入到段落中
            para.ChildObjects.Insert(index, textRange)
            # 删除图片
            para.ChildObjects.Remove(pic)

# 保存结果文档
doc.SaveToFile("output/ReplaceWordImageWithText.docx")
doc.Close()

结果文档

用Python删除Word文档中的图片

在找出文档中的图片子对象后,我们可以直接使用Paragraph.ChildObjects.Remove()方法删除图片子对象,从而删除Word文档中的图片。以下是操作步骤:

1.导入所需模块。

2.创建Document对象,使用Document.LoadFromFile()方法载入Word文档。

3.依次遍历文档中的节、节中的段落以及段落中的子对象,判断每个子对象的DocumentObjectType属性是否为DocumentObjectType.Picture,将判断成功的对象添加到列表中。

4.使用Paragraph.ChildObjects.IndexOf()方法获取图片子对象在段落中的索引。

5.使用Paragraph.ChildObjects.Remove()方法删除图片子对象。

6.使用Document.SaveToFile()方法保存文档。

7.释放资源。

代码示例:

from spire.doc import Document, DocumentObjectType, TextRange, Color

# 创建Document对象
doc = Document()

# 加载Word文档
doc.LoadFromFile("output/AddPicToWord.docx")

# 遍历文档中的所有节
for k in range(doc.Sections.Count):
    sec = doc.Sections.get_Item(k)

    # 遍历每一节中的所有段落
    for m in range(sec.Paragraphs.Count):
        para = sec.Paragraphs.get_Item(m)

        # 创建一个列表来存储图片
        pictures = []

        # 查找图片并将其添加到列表中
        for x in range(para.ChildObjects.Count):
            docObj = para.ChildObjects.get_Item(x)
            if docObj.DocumentObjectType == DocumentObjectType.Picture:
                pictures.append(docObj)

        # 遍历列表中的所有图片,并用文本替换它们
        for pic in pictures:
            # 获取图片的索引位置
            index = para.ChildObjects.IndexOf(pic)
            # 删除图片子对象
            para.ChildObjects.Remove(pic)

# 保存结果文档
doc.SaveToFile("output/RemoveWordImage.docx")
doc.Close()

结果文档

到此这篇关于Python在Word中进行图片添加、替换和删除操作的文章就介绍到这了,更多相关Python Word图片操作内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python实现疫情地图可视化

    Python实现疫情地图可视化

    这篇文章主要介绍了Python如何实现疫情地图可视化,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2021-02-02
  • Pycharm使用CV2的详细图文教程

    Pycharm使用CV2的详细图文教程

    在Windows操作系统下安装Python3和OpenCV库后,通过安装并配置PyCharm开发环境,可以直接显示并调用已安装的包,例如使用cv2库的接口进行编程和项目开发,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2024-10-10
  • python numpy.power()数组元素求n次方案例

    python numpy.power()数组元素求n次方案例

    这篇文章主要介绍了python numpy.power()数组元素求n次方案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • python中upper是做什么用的

    python中upper是做什么用的

    在本篇文章里小编给大家整理的是一篇关于python中upper的作用的相关文章,有需要的朋友们可以参考下。
    2020-07-07
  • Python协程asyncio模块的演变及高级用法

    Python协程asyncio模块的演变及高级用法

    网上很多关于Python协程asyncio模块的教程都是基于老版Python的, 本文将以对比方式展示新老Python版本下协程的写法有什么不同并总结了asyncio的一些高级用法, 包括如何获取协程任务执行结果,gather和wait方法的区别以及如何给任务添加回调函数。
    2021-05-05
  • Python实现绘制3D地球旋转效果

    Python实现绘制3D地球旋转效果

    这篇文章主要为大家详细介绍了如何利用Python实现绘制出3D地球旋转的效果,文中的示例代码讲解详细,具有一定的借鉴价值,需要的可以参考一下
    2023-02-02
  • python异步的ASGI与Fast Api实现

    python异步的ASGI与Fast Api实现

    本文主要介绍了python异步的ASGI与Fast Api实现,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2021-07-07
  • Python如何安装mysql数据库模块

    Python如何安装mysql数据库模块

    这篇文章主要介绍了Python如何安装mysql数据库模块问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • python基础之函数和面向对象详解

    python基础之函数和面向对象详解

    这篇文章主要为大家详细介绍了python的函数和面向对象,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • 教你用Python写一个植物大战僵尸小游戏

    教你用Python写一个植物大战僵尸小游戏

    这篇文章主要介绍了教你用Python写一个植物大战僵尸小游戏,文中有非常详细的代码示例,对正在学习python的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04

最新评论