【发布时间】:2010-09-22 20:15:33
【问题描述】:
我只想创建一个 C# 程序,它将读取一个单词模板并使用邮件合并功能创建 n 个副本。要替换的数据是名称和地址,模板中的其余内容应该保持不变.谁能告诉我该怎么做?
【问题讨论】:
标签: c# automation merge ms-word email
我只想创建一个 C# 程序,它将读取一个单词模板并使用邮件合并功能创建 n 个副本。要替换的数据是名称和地址,模板中的其余内容应该保持不变.谁能告诉我该怎么做?
【问题讨论】:
标签: c# automation merge ms-word email
您可以使用 Aspose.Word 来处理 Word 对象模型,而无需在应该运行程序的地方安装办公室(使用互操作),我正在使用 Aspose.Word 生成 Word 文档。
Aspose 链接:http://www.aspose.com/categories/file-format-components/aspose.words-for-.net-and-java/default.aspx
而且效果还不错:)
【讨论】:
我是用 Java 做的—— (断开的链接)working example here 带有源代码。
这里的想法是:使用 MS-Word 设计和构建您要发送的文档。将其保存为 XML(Word-ML 或新的 .docx 格式)。然后,使用文本编辑器,将文档中的字段替换为占位符标签,例如名称应该放在哪里的@@NAME,以及地址的 @@ADDRESS 等。标签名称无关紧要。
然后,构建替换逻辑 - 使用 XSLT 甚至简单的基于字符串的替换函数,并用实际数据值迭代替换标记。保存每个修改过的文档。
简单易懂。
您可以在 C# 中使用相同的设计 - 实际上它会更容易。
【讨论】:
我不确定您是希望运行邮件合并还是复制模板。我无法帮助你使用 c#,但是这个 VBA 的 sn-p 可能会给你一些想法。
strDir = CurrentProject.Path
strMailmergeDataFilename = strDir & Format(Now, "yymmdd_hhnnss") & ".txt"
' Create CSV from database for use with mailmerge '
' This is a separate function that simply exports the sql '
' ExportSQLToCSV SQL, strMailmergeDataFilename '
'Open merge template '
Set objWordDoc = GetObject(strDir & MergeDocumentFilename, "Word.Document")
objWordDoc.Application.Visible = True
'Format:=0 ''0 = wdOpenFormatAuto'
'Add the data source '
objWordDoc.MailMerge.OpenDataSource _
Name:=strMailmergeDataFilename, ConfirmConversions:=False, _
ReadOnly:=False, LinkToSource:=True, AddToRecentFiles:=False, _
PasswordDocument:="", PasswordTemplate:="", WritePasswordDocument:="", _
WritePasswordTemplate:="", Revert:=False, Format:=0, _
Connection:="", SQLStatement:="", SQLStatement1:=""
'Type some text at a bookmark, you could use .range property '
Selection.Goto What:=wdGoToBookmark, Name:="signaturetext"
Selection.TypeText Text:="You are here"
'Run mailmerge '
objWordDoc.MailMerge.Destination = 0 '0 = wdSendToNewDocument'
objWordDoc.MailMerge.Execute
objWordDoc.Application.ActiveDocument.PrintPreview
【讨论】: