我有一个WPF窗口(使用c#作为代码),它有一些文本字段 我想要的是,当用户按下打印按钮时,我想获取这些字段的信息并使用Microsoft Word 2003模板。该模板有一些空白字段,用于填写来自WPF寡妇的这些信息 如何自动执行此操作?
答案 0 :(得分:4)
这很简单:
将COM引用添加到“Microsoft Word 11.0对象库”(或使用Microsoft.Office.Interop.Word程序集)。您可能必须安装Visual Studio Tools for Office System和/或浏览到主Interop程序集,具体取决于您的VS.NET和Office版本以及您安装的其他内容。
创建Word.Application应用程序对象var app = new Word.Application()
使用var doc = app.Documents.Open(...)
打开文档。请注意,在C#3.5或更低版本中,您必须传递所有参数。您可以使用为其中大多数初始化为System.Reflection.Missing.Value的变量。
使用foreach迭代doc.Fields:读取并解析字段的.Code
范围,然后根据文本框内容更新字段的.Result
范围。
例如:
foreach(Field f in doc.Fields)
if(f.Code.Text.Contains("lastName"))
f.Result.Text = this.LastName;
...
这假设您的数据上下文类具有从XAML绑定的DependencyProperty“LastName”,如下所示:
<TextBox Text="{Binding LastName}" />
答案 1 :(得分:2)
从WPF窗口执行此操作并不重要。后面的代码应该完成所有自动化。以下是一些可以为您提供指导或示例的资源:
请注意,建议不要在服务器上执行此操作。我知道您的要求是针对Wpf,但最终可能会涉及到Silverlight项目。
顺便说一句:使用COM对象比普通的.NET对象有点棘手,Office COM对象更是如此:
<强> Word Automation using C# 强>
请注意他的初步声明:
Object oMissing = System.Reflection.Missing.Value()
Object oTrue = true;
Object oFalse = false;
这是因为所有方法参数都是'ref'参数,因此您无法传递常用常量null
,true
和false
。
Automation Samples Using Managed Code (Visual Basic or Visual C#)
自动化样本的完整列表。