【问题标题】:Mail merge in C# with n copiesC#中的邮件合并n份
【发布时间】:2010-09-22 20:15:33
【问题描述】:

我只想创建一个 C# 程序,它将读取一个单词模板并使用邮件合并功能创建 n 个副本。要替换的数据是名称和地址,模板中的其余内容应该保持不变.谁能告诉我该怎么做?

【问题讨论】:

    标签: c# automation merge ms-word email


    【解决方案1】:

    您可以使用 Aspose.Word 来处理 Word 对象模型,而无需在应该运行程序的地方安装办公室(使用互操作),我正在使用 Aspose.Word 生成 Word 文档。

    Aspose 链接:http://www.aspose.com/categories/file-format-components/aspose.words-for-.net-and-java/default.aspx

    而且效果还不错:)

    【讨论】:

    • Aspose.Word 是一个很棒的工具!强烈推荐!
    • 但我们必须为此付出代价。呐?我正在寻找使用我的 C# 代码的免费实现
    【解决方案2】:

    我是用 Java 做的—— (断开的链接)working example here 带有源代码。

    这里的想法是:使用 MS-Word 设计和构建您要发送的文档。将其保存为 XML(Word-ML 或新的 .docx 格式)。然后,使用文本编辑器,将文档中的字段替换为占位符标签,例如名称应该放在哪里的@@NAME,以及地址的 @@ADDRESS 等。标签名称无关紧要。

    然后,构建替换逻辑 - 使用 XSLT 甚至简单的基于字符串的替换函数,并用实际数据值迭代替换标记。保存每个修改过的文档。

    简单易懂。

    您可以在 C# 中使用相同的设计 - 实际上它会更容易。

    【讨论】:

      【解决方案3】:

      我不确定您是希望运行邮件合并还是复制模板。我无法帮助你使用 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多