使用COM Interop在Project中添加标题

时间:2017-10-05 13:37:47

标签: c# ms-word ms-project office-automation

我使用COM Interop自动创建一个MS-Project文件,并在其中添加了一些任务。

我试图在此文件中自动添加页眉和页脚,而不是在MS-Word中的工作方式,如下所示:

foreach (Microsoft.Office.Interop.Word.Section section in myDoc.Sections)
{
    Microsoft.Office.Interop.Word.Range headerRange = section.Headers[Microsoft.Office.Interop.Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range;
    headerRange.Fields.Add(headerRange, Microsoft.Office.Interop.Word.WdFieldType.wdFieldPage);
    headerRange.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphRight;
}

但是我没有找到关于这个主题的文件,它是否是最不可能的?

修改

我尝试过这种语法:

Application.FilePageSetupHeader , 1, "Date:  &[Date]"

但它看起来像是VBA语法,而我正在使用C#和Interop COM。

我尝试过在执行某些测试时发现的这条指令:

project.Application.FilePageSetupHeader(1, PjAlignment.pjCenter, "Date");

但它总是给我这个错误 System.Runtime.InteropServices.COMException:'参数值无效。'

有人知道C#中的干净语法或FilePageSetupHeader在C#中的工作方式吗?

2 个答案:

答案 0 :(得分:1)

MS Project中的页眉和页脚是基本的。每个部分都有一个字符串属性(左,中,右);格式化通过格式代码完成。

例如,这会将日期添加到中心标题:

Application.FilePageSetupHeader , PjAlignment.pjCenter, "Date:  &[Date]"

FilePageSetupHeader Documentation

FilePageSetupFooter Documentation

答案 1 :(得分:1)

由于函数FilePageSetupHeader的所有参数都是选项,所以看起来第一个参数,视图是必需的。所以我必须得到它(我的项目中只有一个视图):

Microsoft.Office.Interop.MSProject.Views views = project.Views;
Microsoft.Office.Interop.MSProject.View view = null;
foreach(Microsoft.Office.Interop.MSProject.View vw in views)
{
  view = vw;
}

然后您可以使用它编辑标题:

projApp.Application.FilePageSetupHeader(view, Microsoft.Office.Interop.MSProject.PjAlignment.pjCenter,
                                                "Date: " + DateTime.Now.ToString("dd/MM/yyyy"));

注意: projApp是Microsoft.Office.Interop.MSProject.Application对象。