我想在Microsoft Office Word中创建约600个报表。这些文档将填充来自数据库的数据以及本地驱动器上的映像。 我已经想通了,我可以在Visual Studio 2010中创建一个Word模板项目,并对模板进行编程,以便当您输入单个值(id-number)时,它会自动填充整个文档。如何通过模板以编程方式创建Word文档
我相当确信这是可能的。唯一的问题是。如何遍历数据库中的所有条目,根据模板打开一个新文档并设置id值?
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");
}
该应用程序应该只运行一次,生成的报告,它不必很快。它必须容易开发。
这里的问题是,似乎DocumentBase对象不能在Word项目外访问。替代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");
然后在BeforeSave在我的模板中的事件处理程序填写基于在MyCCTitle题为对象中的文本文档。
这将是添加引用矫枉过正什么,他正在努力实现,字自动化/互操作是很容易为这种情况做。 – BrokenGlass 2010-11-29 13:44:05
矫枉过正?一点也不。 OpenXML SDK易于使用,并且意味着完成此操作。在进行文字自动化/互操作时,您是否必须在服务器上安装Word?使用OpenXML你不需要。 – 2010-11-29 13:58:27
再加上我想添加到Moontear的评论,OpenXML格式只是XML它如此之快,他正在试图做什么(生成600文档) – Shuwaiee 2010-11-29 14:40:29