我在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();
感谢您的关注
编辑:例外:
它说:“所需收集的成员不存在”
答案 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();