在句子之间使用C#在单词中插入图像

时间:2019-07-02 09:12:44

标签: c# image ms-word insertion

我有一个MS Word文件,其中包含一些句子,我需要在行之间插入一些图像。在AddPicture中使用Microsoft.Office.Interop.Word方法时,我可以插入图像,但不能插入特定位置。

AddPicture以外,我没有找到其他方法将图像插入现有Word文件中。 我正在尝试在苹果之后的特定行之后插入图片,而苹果图片应该是

在这里,我正在创建一个段落并尝试添加图像。这是我的初始文件:

enter image description here

其中包含包含苹果,芒果和葡萄词的段落。

这是我的代码的输出(如下)

enter image description here

图像应插入苹果线之后 必需的输出:

Required Output

using System;
using System.Collections.Generic;
using System.Reflection;
using System.Reflection.Metadata;
using Word =Microsoft.Office.Interop.Word;
using System.IO;
namespace ConsoleApp2 
{
    class Program
    {
        static void Main(string[] args)
        {
            Word.Application ap = new Word.Application();
            Word.Document document = ap.Documents.Open(@"C:\Users\ermcnnj\Desktop\Doc1.docx");
            //document.InlineShapes.AddPicture(@"C:\Users\ermcnnj\Desktop\apple.png");
            String read = string.Empty;
            List<string> data = new List<string>();
            for (int i = 0; i < document.Paragraphs.Count; i++)
            {
                string temp = document.Paragraphs[i + 1].Range.Text.Trim();
                if (temp != string.Empty && temp.Contains("Apple"))
                {
                    var pPicture = document.Paragraphs.Add();
                    pPicture.Format.SpaceAfter = 10f;
                    document.InlineShapes.AddPicture(@"C:\Users\ermcnnj\Desktop\apple.png", Range: pPicture.Range);
                }

            }

        }
    }
}

上面是我正在使用的代码。

1 个答案:

答案 0 :(得分:0)

以下代码段说明了如何完成此操作。注意。为了清楚起见,简化了仅设置要查找的文本的过程-可能需要指定许多其他属性;请阅读Word语言参考中的Find功能。

如果找到了搜索词,则与Range关联的Find会更改为找到的词,并且可以采取进一步的措施。在这种情况下,在找到的术语之后会插入一个新的(空)段落。 (问题指定该术语是一个段落的全部内容,因此,本示例将假定该内容!)然后将Range移至该新段落并插入InlineShape

请注意如何将图形分配给InlineShape对象。如果需要对该对象执行任何操作,请使用对象变量ils

Word.Application ap = new Word.Application();
Word.Document document = ap.Documents.Open(@"C:\Users\ermcnnj\Desktop\Doc1.docx");

Word.Range rng = document.Content;
Word.Find wdFind = rng.Find;

wdFind.Text = "apple";
bool found = wdFind.Execute();

if (found)
{
    rng.InsertAfter("\n");
    rng.MoveStart(Word.WdUnits.wdParagraph, 1);
    Word.InlineShape ils = rng.InlineShapes.AddPicture(@"C:\Test\avatar.jpg", false, true, rng);
 }