我正在我的 vb.net 应用程序中寻找邮件合并替代方案。使用过word的邮件合并功能,发现处理大量文档时比较有问题。我正在寻找生成合并的替代方法,并且遇到了 open xml。我想这可能是我正在寻找的答案。我开始明白合并将完全由 vb.net 中的代码驱动。我已经开始使用以下代码:
Dim wordprocessingDocument As WordprocessingDocument = wordprocessingDocument.Open("C:\Users\JasonB\Documents\test.docx", True)
'for each simplefield (mergefield)
For Each field In wordprocessingDocument.MainDocumentPart.Document.Body.Descendants(Of SimpleField)()
'get the document instruction values
Dim instruction As String() = field.Instruction.Value.Split(splitChar, StringSplitOptions.RemoveEmptyEntries)
'if mergefield
If instruction(0).ToLower.Equals("mergefield") Then
Dim fieldname As String = instruction(1)
For Each fieldtext In field.Descendants(Of Text)()
fieldtext.Text = "I AM TESTING"
Next
End If
wordprocessingDocument.MainDocumentPart.Document.Save()
wordprocessingDocument.Dispose()
现在这很好用,但我意识到我需要创建尽可能多的文档,因为我将拥有数据行(假设我使用数据表来处理数据)。
我发现的一个建议是遍历每个数据行,获取我的文档模板,将其保存到文件夹并插入数据行数据。然而,这可能意味着我最终会在一个文件夹中包含 12,000 个文档,这些文档需要稍后合并并转换为 pdf。
还有其他选择吗?对我来说突出的另一件事是创建一个新的 word 文档,并从模板中复制 xml,然后替换值。但是,我不知道是否有“更简单”的方法来做到这一点,谢谢。