2011-08-17 4 views
10

Sto cercando di analizzare un documento di Word e le informazioni che sto cercando dovrebbero trovarsi solo nella prima pagina. C'è un modo per ottenere il numero di pagina per un paragrafo?Come trovo il numero di pagina per un paragrafo di Word?

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

risposta

16

Da questo post VSTO 2007: how do I determine the page and paragraph number of a Range? ho potuto vedere si potrebbe ottenere il numero di pagina del modulo una serie

/// <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); 
    } 

E da questo post, how to detect Empty paragraph in Word Document using Microsoft.Office.Interop.Word in C#4.0? sono sicuro u potrebbe trovare la gamma dal punto!

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

si dovrebbe avere la soluzione che unisce entrambe le risposte, ci scommetto!

4
foreach (Word.Paragraph p in document.Paragraphs) 
{ 
    int page = p.Range.Information[Word.WdInformation.wdActiveEndAdjustedPageNumber]; 
    Console.WriteLine(p.Range.Text + " is on page " + page); 
} 

Qualcosa del genere potrebbe essere quello che stai cercando. Leggi la differenza tra wdActiveEndPageNumber e wdActiveEndAdjustedPageNumber per vedere quale si adatta alle tue necessità.