2010-05-01 2 views
4

У меня есть этот код:Как получить номер страницы?

Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application(); 
object nullobj = System.Reflection.Missing.Value; 
object file = openFileDialog1.FileName; 
Microsoft.Office.Interop.Word.Document doc = app.Documents.Open(
    ref file, ref nullobj, ref nullobj, 
    ref nullobj, ref nullobj, ref nullobj, 
    ref nullobj, ref nullobj, ref nullobj, 
    ref nullobj, ref nullobj, ref nullobj, 
    ref nullobj, ref nullobj, ref nullobj); 
doc.ActiveWindow.Selection.WholeStory(); 
doc.ActiveWindow.Selection.Copy(); 
IDataObject data = Clipboard.GetDataObject(); 
string text = data.GetData(DataFormats.Text).ToString(); 
textBox2.Text = text; 
doc.Close(ref nullobj, ref nullobj, ref nullobj); 
app.Quit(ref nullobj, ref nullobj, ref nullobj); 

Но он не возвращает номер страницы. Как я могу получить номер страницы?

ответ

1

Посмотрите на этот пример:

http://www.c-sharpcorner.com/UploadFile/amrish_deep/WordAutomation05102007223934PM/WordAutomation.aspx

В частности, обратите внимание на Word.WdFieldType.wdFieldPage и Word.WdFieldType.wdFieldNumPages.

+1

Это был бы лучший ответ, если бы он включал основные части ответа здесь и предоставил ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. – KatieK

6

Я бы сказал, что это лучшее решение

Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application(); 
object nullobj = System.Reflection.Missing.Value; 
object file = openFileDialog1.FileName; 
Microsoft.Office.Interop.Word.Document doc = app.Documents.Open(
    ref file, ref nullobj, ref nullobj, 
    ref nullobj, ref nullobj, ref nullobj, 
    ref nullobj, ref nullobj, ref nullobj, 
    ref nullobj, ref nullobj, ref nullobj, 
    ref nullobj, ref nullobj, ref nullobj); 
doc.ActiveWindow.Selection.WholeStory(); 
doc.ActiveWindow.Selection.Copy(); 
IDataObject data = Clipboard.GetDataObject(); 

// get number of pages 
Microsoft.Office.Interop.Word.WdStatistic stat = Microsoft.Office.Interop.Word.WdStatistic.wdStatisticPages; 
int pages = doc.ComputeStatistics(stat, Type.Missing); 

string text = data.GetData(DataFormats.Text).ToString(); 
textBox2.Text = text; 
doc.Close(ref nullobj, ref nullobj, ref nullobj); 
app.Quit(ref nullobj, ref nullobj, ref nullobj); 
0

Для меня, функция ComputeStatistics даст мне большее количество, чем фактическое количество страниц, так что не работает для меня.

Я использовал range.get_Information()

var range = doc.Range().GoTo(WdGoToItem.wdGoToPage, WdGoToDirection.wdGoToLast); 
var numPages = range.get_Information(WdInformation.wdActiveEndPageNumber); 

Первая строка получает диапазон на последней странице документа. Вторая строка получает страницу с диапазоном.

Смежные вопросы