是否可以在不使用互操作的情况下将合并字段添加到现有.docx
文档,只使用来自 CodeBehind 的开放 SDK 处理?
问问题
1919 次
1 回答
2
是的,这是可能的,我在下面创建了一个小方法,您只需传递要分配给合并字段的名称并为您创建它。以下代码用于创建新文档,但使用该方法附加到现有文档应该很容易,希望这对您有所帮助:
using System;
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
using (WordprocessingDocument package = WordprocessingDocument.Create("D:\\ManualMergeFields.docx", WordprocessingDocumentType.Document))
{
package.AddMainDocumentPart();
Paragraph nameMergeField = CreateMergeField("Name");
Paragraph surnameMergeField = CreateMergeField("Surname");
Body body = new Body();
body.Append(nameMergeField);
body.Append(surnameMergeField);
package.MainDocumentPart.Document = new Document(new Body(body));
}
}
static Paragraph CreateMergeField(string name)
{
if (!String.IsNullOrEmpty(name))
{
string instructionText = String.Format(" MERGEFIELD {0} \\* MERGEFORMAT", name);
SimpleField simpleField1 = new SimpleField() { Instruction = instructionText };
Run run1 = new Run();
RunProperties runProperties1 = new RunProperties();
NoProof noProof1 = new NoProof();
runProperties1.Append(noProof1);
Text text1 = new Text();
text1.Text = String.Format("«{0}»", name);
run1.Append(runProperties1);
run1.Append(text1);
simpleField1.Append(run1);
Paragraph paragraph = new Paragraph();
paragraph.Append(new OpenXmlElement[] { simpleField1 });
return paragraph;
}
else return null;
}
}
}
您可以从此 url 下载 Open Xml 生产力工具(如果您还没有)http://www.microsoft.com/download/en/details.aspx?id=5124 此工具具有“反映代码”功能.因此,您可以在 MS Word 文档中手动创建合并字段,然后使用生产力工具打开文档,并查看有关如何在代码中执行此操作的 C# 代码示例!这非常有效,我已经使用这个确切的工具来创建上面的示例。祝你好运
于 2011-11-14T09:09:03.690 回答