Как выбрать последние символы страницы с помощью Interop Word? - PullRequest
1 голос
/ 21 апреля 2020

Я работаю над приложением, которое автоматически редактирует документы Word с помощью Interop.Word API.

Я выполняю исправления форматирования некоторых элементов на первой странице, например заголовка. Пока я редактирую форматирование, текст в следующих разделах перемещается. Это проблематично c, оно меняет позиции рисунков и таблиц.

Мой работодатель позволил мне решить эту проблему, поиграв с межстрочным интервалом одного из элементов на первой странице. У меня уже есть код для этого. Я сравниваю строку до и после редактирования, чтобы выполнить изменение межстрочного интервала.

Что я не знаю, так это как выбрать последние символы на странице.

Я уже пробовал это, но проблема заключается в том, что весь документ выделен.

        object missing = System.Reflection.Missing.Value;
        object what = Microsoft.Office.Interop.Word.WdGoToItem.wdGoToPage;
        object which = Microsoft.Office.Interop.Word.WdGoToDirection.wdGoToAbsolute;
        object count = 1; //pagenumber

        doc.Selection.GoTo(ref what, ref which, ref count, ref missing);
        Object endPageOne = doc.Selection.Range.End;

        Range range = doc.ActiveDocument.Range(ref endPageOne);
        range.Select();
        return range;

Мне нужно найти способ выделить несколько последних символов первой страницы.

1 Ответ

0 голосов
/ 26 апреля 2020

Я сам нашел решение.

Этот код выбирает полную первую страницу. С помощью substring я могу выбрать последние символы.

        object missing = System.Reflection.Missing.Value;
        object what = Microsoft.Office.Interop.Word.WdGoToItem.wdGoToPage;
        object which = Microsoft.Office.Interop.Word.WdGoToDirection.wdGoToAbsolute;
        object count = 1; //pagenumber
        object count2 = (int)count + 1;

        Range startRange = doc.Selection.GoTo(ref what, ref which, ref count, ref missing);
        Range endRange = doc.Selection.GoTo(ref what, ref which, ref count2, ref missing);
        endRange.SetRange(startRange.Start, endRange.End);
        endRange.Select();
        return endRange;
...