C# 从Word.Range-VSTO Word Interop C读取页眉和页脚#

C# 从Word.Range-VSTO Word Interop C读取页眉和页脚#,c#,interop,ms-word,vsto,C#,Interop,Ms Word,Vsto,我有一个范围对象,我想用它从范围所在的页面中提取信息。信息在表格的页眉和页脚中,我想从表格中读取文本 我尝试了:word.Sections[1]。标题[WdHeaderFooterIndex.wdheaderfooterprismary]。形状。范围(参考页码)。TextFrame.TextRange.Text 其中word是一个范围,而页码是该范围所在的页码。 问题是我找不到真正的页码!使用word.get\u信息(WdInformation.wdActiveEndPageNumber)返回不

我有一个
范围
对象,我想用它从
范围
所在的页面中提取信息。信息在表格的页眉和页脚中,我想从表格中读取文本

我尝试了:
word.Sections[1]。标题[WdHeaderFooterIndex.wdheaderfooterprismary]。形状。范围(参考页码)。TextFrame.TextRange.Text

其中word是一个
范围
,而
页码
是该范围所在的页码。
问题是我找不到真正的页码!使用
word.get\u信息(WdInformation.wdActiveEndPageNumber)
返回不正确的页码

如果有人感兴趣,我找到了答案:

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;

阅读所有文本文档。随后,我使用它来分析和提取数据:

        Document doc = Globals.ThisAddIn.Application.ActiveDocument; 

        string headers = "";

        foreach (Section section in doc.Sections)
        {
            foreach (HeaderFooter hf in section.Headers)
            {
                headers += hf.Range.Text;
            }
        }

        string docText = headers + doc.Range(doc.Content.Start, doc.Content.End).Text;