2011-08-17 5 views
10

Estoy tratando de analizar un documento de Word y la información que estoy buscando debe ubicarse solo en la primera página. ¿Hay alguna forma de obtener el número de página para un párrafo?¿Cómo puedo encontrar el número de página de un párrafo de Word?

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

Respuesta

16

De este post VSTO 2007: how do I determine the page and paragraph number of a Range? pude ver que podría obtener el número de página de formulario una gama

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

Y a partir de este post, how to detect Empty paragraph in Word Document using Microsoft.Office.Interop.Word in C#4.0? estoy seguro u podría encontrar el rango desde el punto!

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

debe tener su solución combinando ambas respuestas, ¡apuesto!

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

Algo así podría ser lo que estás buscando. Lea sobre la diferencia entre wdActiveEndPageNumber y wdActiveEndAdjustedPageNumber para ver cuál se adapta a sus necesidades.

Cuestiones relacionadas