Как мне найти номер страницы для абзаца слова? - PullRequest
10 голосов
/ 17 августа 2011

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

foreach (Word.Paragraph p in document.Paragraphs)
{
    // pageNo = .....
    // if(pageNo == 1 && p.Range.Text.StartsWith("This")) { 
    //     /* do some processing with the paragraph */ 
    // }
}

Ответы [ 2 ]

16 голосов
/ 17 августа 2011

Из этого поста VSTO 2007: как определить номер страницы и параграфа диапазона? я мог видеть, что вы можете получить номер страницы из диапазона

/// <summary>
    /// Determines the pagenumber of a range.
    /// </summary>
    /// <param name="range">The range to be located.</param>
    /// <returns></returns>
    private static int GetPageNumberOfRange(Word.Range range)
    {
        return (int)range.get_Information(Word.WdInformation.wdActiveEndPageNumber);
    }

И отв этом сообщении как определить пустой абзац в документе Word с помощью Microsoft.Office.Interop.Word в C # 4.0? я уверен, что вы можете найти диапазон из абзаца!

for each p in Doc.Content.Paragraphs
    if (p.Range.End - p.Range.Start) > 1 then (The paragraph is empty)
Next

у вас должно быть решение, сочетающее оба ответа, держу пари!

4 голосов
/ 17 августа 2011
foreach (Word.Paragraph p in document.Paragraphs)
{
   int page = p.Range.Information[Word.WdInformation.wdActiveEndAdjustedPageNumber];
   Console.WriteLine(p.Range.Text + " is on page " + page);
}

Нечто подобное может быть тем, что вы ищете. Узнайте разницу между wdActiveEndPageNumber и wdActiveEndAdjustedPageNumber, чтобы узнать, какой из них соответствует вашим потребностям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...