2010-07-20 238 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;