C# 在Word文档中更改或添加模板

C# 在Word文档中更改或添加模板,c#,templates,ms-word,C#,Templates,Ms Word,我想用一个简单的C#程序从大量Word文档中更改模板 这些文档都基于标题样式、字体等的标准模板。。。我们希望更改此模板(更具体地说:标题颜色和其他小东西)并修改当前文档以使用此新模板 总之,通过单击功能区中设计器选项卡中的“文档模板”,可以轻松实现这一点。这很好地工作,并且完全符合它应该做的:根据新模板更改标题颜色等 因此,问题很简单:如何在.NET应用程序中执行完全相同的操作(附加其他模板和更改样式) 我想我应该使用Microsoft.Office.Interop.Word名称空间,但我被困在

我想用一个简单的C#程序从大量Word文档中更改模板

这些文档都基于标题样式、字体等的标准模板。。。我们希望更改此模板(更具体地说:标题颜色和其他小东西)并修改当前文档以使用此新模板

总之,通过单击功能区中设计器选项卡中的“文档模板”,可以轻松实现这一点。这很好地工作,并且完全符合它应该做的:根据新模板更改标题颜色等

因此,问题很简单:如何在.NET应用程序中执行完全相同的操作(附加其他模板和更改样式)


我想我应该使用Microsoft.Office.Interop.Word名称空间,但我被困在那里了…

我自己设法解决了这个问题,显然不是那么困难。这是我使用的代码:

        object missing = System.Reflection.Missing.Value;
        Word.Application wordApp = new Word.ApplicationClass();
        Word.Document aDoc = null;
        object readOnly = false;
        object isVisible = false;

        wordApp.Visible = false;
        object filename = "d:\\Testdocs\\testfile.doc";
        object saveAs = "d:\\Testdocs\\output.doc";
        object oTemplate = "d:\\Testdocs\\Template.dotx";

        aDoc = wordApp.Documents.Add(ref oTemplate, ref missing,
                                     ref missing, ref missing);

        aDoc = wordApp.Documents.Open(ref filename, 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);

        aDoc.Activate();
        aDoc.set_AttachedTemplate(oTemplate);
        aDoc.UpdateStyles();

        aDoc.SaveAs(ref saveAs, ref missing, ref missing,
                    ref missing, ref missing, ref missing,
                    ref missing, ref missing, ref missing,
                    ref missing, ref missing, ref missing, ref missing);

        aDoc.Close(ref missing, ref missing, ref missing);

使用互操作程序集不是一个好主意,特别是如果它是asp.net应用程序。您可能希望使用一些开源ooxml实现,或者可能使用aspose之类的商业库。是否可以使用“文件名”的相对路径?我一直在努力,但似乎不起作用。