Вставка изображений в слово с использованием C # между предложением - PullRequest
0 голосов
/ 02 июля 2019

У меня есть файл MS Word, в котором есть несколько предложений, и мне нужно вставить несколько изображений между строк. Когда я использую метод AddPicture в Microsoft.Office.Interop.Word, я могу вставить изображение, но не в определенном месте.

Я не нашел способа вставить что-либо кроме AddPicture для вставки изображения в существующий файл слова. Я пытаюсь вставить изображение после определенной строки после яблока, должно быть изображение яблока .

Здесь я создаю абзац и пытаюсь добавить изображение. Это мой исходный файл:

enter image description here

Содержит абзацы, содержащие слова яблоко, манго и виноград.

Это вывод моего кода (ниже)

enter image description here

Изображение должно быть вставлено после линии яблока Требуемый выход:

Требуемый выход

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 голосов
/ 04 июля 2019

Следующий фрагмент кода иллюстрирует, как это можно сделать.Обратите внимание, что.для ясности упрощено задание только текста, который будет найден - существует множество дополнительных свойств, которые, возможно, потребуется указать;Подробнее о функциональности Find см. в справочнике по языку Word.

Если найден поисковый термин, 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);
 }
...