Как найти сноску в абзаце в Microsoft Word с помощью C#

В настоящее время я получаю текст сноски в абзаце, используя

     foreach (Microsoft.Office.Interop.Word.Paragraph para in doc.Paragraphs)
        {
            Microsoft.Office.Interop.Word.Range range = para.Range.Duplicate;

            string x = "";
            for (int i = 1; i <= para.Range.Footnotes.Count; i++)
            {
                x = para.Range.Footnotes[i].Range.Text;
             }
        }

А вот текст "x" я хочу добавить рядом со сноской скрипта в абзаце для обработки. Я хотел бы знать, есть ли возможность перемещаться по местоположению или разделить абзац, используя любой разделитель для маркера сноски, чтобы я мог воссоздать текст с добавленным к нему текстом тела и сноски.


person Arun    schedule 20.10.2013    source источник


Ответы (1)


Лучший вариант, на мой взгляд, это использовать .Find property из Range object. Вам нужно будет найти ^f, которые представляют собой метку сноски (в пределах диапазона).

Сначала покажу код на VBA (я знаю этот язык гораздо лучше):

para.Range.Select
Selection.Find.Execute "^f"
//'the code below will insert footnote text after your footnote mark
Selection.InsertAfter " " & Selection.Footnotes(1).Range.Text

Думаю, на C# это будет выглядеть так (или похоже, не проверял):

para.Range.Select;
Selection.Find.Execute("^f", ref Type.Missing, ref Type.Missing, ref Type.Missing, ref Type.Missing,
                             ref Type.Missing, ref Type.Missing, ref Type.Missing, ref Type.Missing,
                             ref Type.Missing, ref Type.Missing, ref Type.Missing, ref Type.Missing,
                             ref Type.Missing, ref Type.Missing);

Selection.InsertAfter(string.Format(" {0}", Selection.Footnotes[1].Range.Text));
person Kazimierz Jawor    schedule 20.10.2013