seb*_*ler 12 c# ms-word office-interop
我尝试使用C#Interop程序集使用以下代码填写Microsoft Word中的表单字段
string filename = @"N:\mehler\Vorlage2.dotx";
Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application();
Microsoft.Office.Interop.Word.Document doc = new Microsoft.Office.Interop.Word.Document();
doc = word.Documents.Open(filename);
doc.Activate();
foreach (Microsoft.Office.Interop.Word.FormField field in doc.FormFields)
{
switch (field.Name)
{
case "Text2":
field.Range.Text = "1";
break;
default:
break;
}
}
doc.SaveAs2(@"N:\mehler\Ausgefuellt.docx");
doc.Close();
word.Quit();
System.Diagnostics.Process.Start(@"N:\mehler\Ausgefuellt.docx");
Run Code Online (Sandbox Code Playgroud)
Microsoft Word无法打开文件Ausgefuellt.docx并显示一条消息,指出发生了未知错误.
我创建了一个简单的Word文档,其中包含一些未格式化的文本和2个Text-Form-Fields
任何人都可以告诉我,出了什么问题,或者我的源代码中是否有错误
编辑:我设法指定问题.我创建了一个只包含一个文本表单字段的文档.在Word 2013中,这是主题"Formulare aus Vorversionen"(我将其转换为"来自以前版本的Formfields").如果我注释掉整个foreach Block以便我只打开并保存文档,我会得到相同的结果.
如果我直接在Word中打开源文件,则没有问题.我还尝试加载文档并使Word可见.结果看起来像一个没有加载文档的空Word实例.
Nir*_*eld 13
你应该使用:
doc = Word.Documents.Add(filename);
Run Code Online (Sandbox Code Playgroud)
代替:
doc = Word.Documents.Open(filename);
Run Code Online (Sandbox Code Playgroud)
所以Word将使用该模板来创建文档文件,而不是打开模板本身.当活动文档是模板时,Word的行为似乎不同.
| 归档时间: |
|
| 查看次数: |
20079 次 |
| 最近记录: |