c#如何在word文档的页脚中获取表格

时间:2017-09-15 07:27:14

标签: c# ms-word

我在C#中使用Microsoft Office库遇到了一些问题。当我试图将表格放在我的第一页页脚中时,程序找不到它,我只能以文本格式获取表格:

object nom_fi = (object)chemin;
object readOnly = false;
object isVisible = false;
object missing = System.Reflection.Missing.Value;
Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.Application();
Microsoft.Office.Interop.Word.Document doc = wordApp.Documents.Open(ref nom_fi, ref missing, ref readOnly, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref isVisible, ref missing, ref missing, ref missing, ref missing);
doc.Activate();

foreach (Microsoft.Office.Interop.Word.Section sec in doc.Sections)
{
    Microsoft.Office.Interop.Word.Range range = sec.Footers[Microsoft.Office.Interop.Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range;
    Microsoft.Office.Interop.Word.Table t = range.Tables[0];
}
doc.Close();

感谢您的关注

编辑:例外:

enter image description here

它说:“所需收集的成员不存在”

1 个答案:

答案 0 :(得分:1)

如果您的部分设置为具有不同的首页页眉/页脚,则需要使用wdHeaderFooterFirstPage获取该特定的第一页页脚:

Range range = sec.Footers[WdHeaderFooterIndex.wdHeaderFooterFirstPage].Range;

如果您不知道文档的部分/页面设置,您可以获得第一页上显示的页脚范围,如下所示:

Range range;
if (sec.Footers[WdHeaderFooterIndex.wdHeaderFooterFirstPage].Exists)
{
    range = sec.Footers[WdHeaderFooterIndex.wdHeaderFooterFirstPage].Range;
} 
else 
{
    range = sec.Footers[WdHeaderFooterIndex.wdHeaderFooterPrimary].Range; 
}

请注意,表索引从1开始(注释中已经提到过),因此您需要将代码调整为Table t = range.Tables[1];

请注意,通过在文件顶部导入带有using指令的命名空间,省略可选参数,并删除显式object声明(后者),可以使代码更具可读性只有早期版本的.NET才需要这些东西:

using Microsoft.Office.Interop.Word;

var wordApp = new Application();
var doc = wordApp.Documents.Open(chemin, ReadOnly: false, Visible: false);
doc.Activate();

foreach (Section sec in doc.Sections)
{
    var range = sec.Footers[WdHeaderFooterIndex.wdHeaderFooterFirstPage].Range;
    var table = range.Tables[1];
}

doc.Close();