2010-05-01 22 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); 

但它不返回頁碼。我怎樣才能得到頁碼?

回答

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

第一行獲取該文件的最後一頁的範圍。 第二行獲取範圍所在的頁面。