如何从模板以编程方式创建word文档

Jes*_*erg 17 c# ms-word office-interop

我试图在microsoft office Word中创建大约600个报告.文档中填充了数据库中的数据和本地驱动器上的图像.我已经想到,我可以在visual studio 2010中创建一个Word模板项目,并对模板进行编程,这样当您输入单个值(id-number)时,它会自动填写整个文档.

我很有信心这是可能的.唯一的问题是.如何遍历数据库中的所有条目,根据模板打开新文档并设置id-value?

for(int i = 0; i < idnumbers.Count(); i++)
{
     Word.Application app = new Word.Application();
     Word.Document doc = app.Documents.Add(@"C:\..\WordGenerator\bin\Debug\WordTemplate.dotx");
     //input the id-number below: HOW??

     doc.SaveAs(FileName: @"c:\temp\test.docx"); 
}
Run Code Online (Sandbox Code Playgroud)

应用程序应该只运行一次,生成报告,而且不一定要快.它必须易于开发.

这里的问题是,似乎在Word项目之外无法访问DocumentBase对象.替代Microsoft.Office.Interop.Word.Document没有像SelectContentControlsByTitle这样的功能,它允许我查找和设置我的ContentControls.而这正是我需要做的......

这就是我的代码现在将文本插入我的字段:Word.Application app = new Word.Application();

        Word.Document doc = app.Documents.Add(@"C:\..\test.dotx");

        foreach (Word.ContentControl cc in doc.SelectContentControlsByTitle("MyCCTitle"))
        {
            cc.Range.Text += "1234";
        }

        doc.SaveAs(FileName: @"c:\temp\test.docx");
Run Code Online (Sandbox Code Playgroud)

然后我的模板上的事件处理程序在BeforeSave上根据MyCCTitle标题对象中的文本填写文档.

Jen*_*ens 12

不要使用Office Automation.Office自动化在后台打开办公室实例并对其执行操作.开办办公室实例600次似乎不是一件非常有趣的事情.(它永远不会运行服务器端)

看看Open XML.你可以在下面找到关于它的负载:

http://openxmldeveloper.org/

编辑:Openxmldeveloper正在关闭.请在http://www.ericwhite.com/上找到上面提到的所有来源.


Foo*_*ole 6

也许你应该看看Microsoft.Office.Tools.Word.Document?

Document.SelectContentControlsByTitle


小智 5

如果您使用的是Word 2007或2010格式,则应阅读有关OpenXML格式的信息

http://msdn.microsoft.com/en-us/library/bb264572(office.12).aspx


Jas*_*ext 5

这里似乎有2个问题:

  1. 如何启动特定 id 值的流程

  2. 您如何填充文档。

sunilp 已回答问题2。数据绑定内容控件是为 Word 2007 及更高版本注入数据的最佳方式。

OP 的焦点似乎是第一季度。

没有命令行开关可以让您将任意值传递给 Word:http://support.microsoft.com/kb/210565

所以在我看来你有 4 个选择:

  1. 通过 OpenXML SDK 完成所有工作,根本不打开 Word(正如其他海报所建议的那样)

  2. 使用 OpenXML SDk 创建一个最小的预先存在的文档(包含您的 ID 号),然后打开 Word

  3. 自动将 Word 的 ID 号传递给文档,或许作为文档属性

  4. 使用 VSTO 或 Word 宏 (VBA) 在 Word 中创建 600 个文档

我?我将在 Word 中创建一个包含数据绑定内容控件的 docx,然后保存它。

然后,in 会将我的数据作为自定义 xml 部分注入其中,并保存它。(您可以使用 OpenXML SDK 执行此步骤,或者如果您需要让 Word 更新您的某些下游流程的绑定,则可以在 Word 中执行此步骤)