在操作 Word 文档时,您有时可能会遇到需要替换文档中的图片的情况。例如,在使用模板创建简历时,您可能需要用自己的照片替换模板中的个人照片。本文将演示如何使用 Spire.Doc for .NET 通过 C# 替换 Word 文档中的图片。
安装 Spire.Doc for .NET
首先,您需要将 Spire.Doc for.NET 包含的 DLL 文件作为引用添加到您的 .NET 项目中。DLL 文件可以从此链接下载,也可以通过 NuGet 安装。
PM> Install-Package Spire.DocC# 将 Word 中的图片替换为新图片
要想用另一张图片替换 Word 文档中的图片,需要遍历文档中的元素,找到图片并将其添加到列表中,然后从列表中获取要替换的图片,并调用 DocPicture.LoadImage() 方法将其替换为另一张图片。具体步骤如下:
- 创建 Document 类的对象。
- 使用 Document.LoadFromFile() 方法加载 Word 文档。
- 创建一个列表来存储图片。
- 遍历文档中的所有节。
- 遍历每一节中的所有段落。
- 遍历每个段落中的所有子对象。
- 查找图片并将其添加到列表中。
- 获取列表中的指定图片并使用 DocPicture.LoadImage() 方法将其替换为另一张图片。
- 使用 Document.SaveToFile() 方法保存结果文档。
- C#
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using System.Collections;
using System.Drawing;
namespace ReplaceImageWithImage
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //创建Document对象
            Document doc = new Document();
            //加载Word文档
            doc.LoadFromFile("示例.docx");
            //创建一个列表
            ArrayList pictures = new ArrayList();
            //遍历文档中所有节
            foreach (Section sec in doc.Sections)
            {
                //遍历每一节中所有段落
                foreach (Paragraph para in sec.Paragraphs)
                {
                    //遍历每一段中的所有子对象
                    foreach (DocumentObject docObj in para.ChildObjects)
                    {
                        //查找图片并将其添加到列表中
                        if (docObj.DocumentObjectType == DocumentObjectType.Picture)
                        {
                            pictures.Add(docObj);
                        }
                    }
                }
            }
            //用新图片替换列表中的第一张图片
            DocPicture picture = pictures[0] as DocPicture;
            picture.LoadImage(Image.FromFile("图片.png"));
            //保存结果文件
            doc.SaveToFile("替换图片.docx", FileFormat.Docx2013);
        }
    }
}
C# 将 Word 中的图片替换为文本
Spire.Doc for .NET 没有提供用文本替换图片的直接方法,但您可以通过在图片位置插入文本,然后删除文档中的图片来实现这一功能。以下是用文本替换 Word 文档中所有图片的详细步骤:
- 创建 Document 类的对象。
- 使用 Document.LoadFromFile() 方法加载 Word 文档。
- 遍历文档中的所有节。
- 遍历每一节中的所有段落。
- 创建一个列表来存储图片。
- 遍历每个段落中的所有子对象。
- 查找图片并将其添加到列表中。
- 遍历列表中的图片,然后使用 Paragraph.ChildObjects.Indexof() 方法获取段落中图片的索引。
- 初始化 TextRange 类的实例,并通过 TextRange.Text 属性设置文本范围的文本。
- 使用 Paragraph.ChildObjects.Insert() 方法在图片位置插入文本。
- 使用 Paragraph.ChildObjects.Remove() 方法删除段落中的图片。
- 使用 Document.SaveToFile() 方法保存结果文档。
- C#
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using System.Collections;
namespace ReplaceImageWithText
    {
        internal class Program
        {
            static void Main(string[] args)
            {
                //创建Document对象
                Document doc = new Document();
                //加载Word文档
                doc.LoadFromFile("示例.docx");
                int j = 1;
                //遍历文档中所有节
                foreach (Section sec in doc.Sections)
                {
                    //遍历每一节中所有段落
                    foreach (Paragraph para in sec.Paragraphs)
                    {
                        //创建一个列表
                        ArrayList pictures = new ArrayList();
                        //查找图片并将其添加到列表中
                        foreach (DocumentObject docObj in para.ChildObjects)
                        {
                            if (docObj.DocumentObjectType == DocumentObjectType.Picture)
                            {
                                pictures.Add(docObj);
                            }
                        }
                        //遍历列表中的所有图片,并用文本替换它们
                        foreach (DocumentObject pic in pictures)
                        {
                            int index = para.ChildObjects.IndexOf(pic);
                            TextRange range = new TextRange(doc);
                            range.Text = string.Format("这是图片-{0}", j);
                            para.ChildObjects.Insert(index, range);
                            para.ChildObjects.Remove(pic);
                            j++;
                        }
                    }
                }
                //保存结果文件
                doc.SaveToFile("文字替换图片.docx", FileFormat.Docx);
            }
        }
    }
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
 



 
					



