2010-07-20 239 views
3

我有一個Range對象,我想用它從Range所在的頁面中提取信息。該信息位於頁眉和頁腳內部一張桌子,我想從桌子上讀取文字。從Word.Range讀取頁眉和頁腳 - VSTO Word Interop C#

我想:word.Sections[1].Headers[WdHeaderFooterIndex.wdHeaderFooterPrimary].Shapes.Range(ref pageNumber).TextFrame.TextRange.Text;

凡字是RangepageNumber是在這個範圍內所在的頁碼 的問題是我不能讓真正的頁碼!使用word.get_information(WdInformation.wdActiveEndPageNumber)返回錯誤的頁碼!

回答

6

我找到了答案櫃面ANY1感興趣:

int i = (int)range.get_Information(WdInformation.wdActiveEndPageNumber) % 2; 
WdHeaderFooterIndex index; 
if (i == 0 && range.Sections[1].PageSetup.OddAndEvenPagesHeaderFooter == 1) 
    index = WdHeaderFooterIndex.wdHeaderFooterEvenPages; 
else 
    index = WdHeaderFooterIndex.wdHeaderFooterPrimary; 

Range sRange = range.Sections[1].Range; 
object direction = Word.WdCollapseDirection.wdCollapseStart; 
sRange.Collapse(ref direction); 
if (range.get_Information(WdInformation.wdActiveEndPageNumber) == sRange.get_Information(WdInformation.wdActiveEndPageNumber) 
    && range.Sections[1].PageSetup.DifferentFirstPageHeaderFooter == 1) 
    index = WdHeaderFooterIndex.wdHeaderFooterFirstPage; 

object rangeIndex = 1; 
Range headerRange = range.Sections[1].Headers[index].Range.ShapeRange.TextFrame.TextRange; 

string profession = headerRange.Tables[1].Cell(4, 1).Range.Text; 
string manPower = headerRange.Tables[1].Cell(4, 2).Range.Text; 
string registration = headerRange.Tables[1].Cell(4, 3).Range.Text; 
string taggingListNum = headerRange.Tables[1].Cell(4, 4).Range.Text;