用Spire.doc来合并邮件

让我们想象一下这样的场景:你在一家IT公司上班。某天公司的某一产品大幅度升级了。然后你需要通知所有的客户。这真是很长的名单。一个个的通知他们是有点蠢的,因为这要花费太多的时间和人力了。为什么不找个更好的方法来快速高效地完成这项工作呢?我这里给大家一个用组件来解决的方法。组件的链接在这里。这是Spire.doc的另一个小功能,就是用它来合并邮件。

这是一个通知邮件并且所发的内容都是相同的。首先我们先创建一个模板,这个模板是用来创建通知邮件。请看下面的模板。

接下来我们要做的是将方括号内的文本替换成客户信息。下面是实现的代码:

private int lastIndex = 0;
private void button1_Click(object sender, EventArgs e)
  {
     //create word document
     Document document = new Document();
     document.LoadFromFile("template.doc");
     lastIndex = 0;
 
     //informaton of customers
     List<CustomerRecord> customerRecords = new List<CustomerRecord>();
     CustomerRecord c1 = new CustomerRecord();
     c1.ContactName = "Lucy";
     c1.Fax = "786-324-10";
     c1.Date = DateTime.Now;
     customerRecords.Add(c1);
 
     CustomerRecord c2 = new CustomerRecord();
     c2.ContactName = "Lily";
     c2.Fax = "779-138-13";
     c2.Date = DateTime.Now;
     customerRecords.Add(c2);
 
     CustomerRecord c3 = new CustomerRecord();
     c3.ContactName = "James";
     c3.Fax = "363-287-02";
     c3.Date = DateTime.Now;
     customerRecords.Add(c3);
 
     //execute mailmerge
     document.MailMerge.MergeField += newMergeFieldEventHandler(MailMerge_MergeField);
     document.MailMerge.ExecuteGroup(new MailMergeDataTable("Customer", customerRecords));
 
     //save doc file.
      document.SaveToFile("result.doc", FileFormat.Doc);
 
     //viewer the result file.
     System.Diagnostics.Process.Start("result.doc");
  }
 
void MailMerge_MergeField(object sender, MergeFieldEventArgs args)
   {
      //next row
      if (args.RowIndex > lastIndex)
      {
          lastIndex = args.RowIndex;
           AddPageBreakForMergeField(args.CurrentMergeField);
       }
    }
 
void AddPageBreakForMergeField(IMergeField mergeField)
{
     //find position of needing to add page break
     bool foundGroupStart = false;
     Paragraph paramgraph = mergeField.PreviousSibling.Owner as Paragraph;
     MergeField merageField = null;
     while (!foundGroupStart)
     {
         paramgraph = paramgraph.PreviousSibling as Paragraph;
         for (int i = 0; i < paramgraph.Items.Count; i++)
         {
            merageField = paramgraph.Items[i] as MergeField;
             if ((merageField != null) && (merageField.Prefix == "GroupStart"))
               {
                 foundGroupStart = true;
                        break;
                }
           }
    }
 
            paramgraph.AppendBreak(BreakType.PageBreak);
        }
 
 
//class to represent customers
public class CustomerRecord
{
   private string m_contactName;
   public string ContactName
     {
        get
        {
          return m_contactName;
         }
        set
        {
           m_contactName = value;
         }
    }
 
private string m_fax;
public string Fax
{
    get
    {
         return m_fax;
     }
     set
     {
        m_fax = value;
       }
}
 
private DateTime m_date;
public DateTime Date
{
    get
    {
       return m_date;
    }
    set
    {
        m_date = value;
     }
  }
}

输出结果截图:

用Spire.doc来合并邮件相关推荐

  1. 【Spire.Doc】合并 Word 文档,将多个文档合并为一个

    使用C# 在文档后添加新页合并 private void SaveToFileInsertText(string sourcePath, string insertPath, string saveT ...

  2. Word控件Spire.Doc 【邮件合并】教程(二):如何在 Silverlight 中使用邮件合并

    我们已经介绍了如何在 C# 和 VB.NET 中比较两个 Word 文档.从 Spire.Doc V8.12.14 开始,它支持在结构列表中获取两个 Word 文档之间的差异.本文将向您展示如何使用 ...

  3. Word控件Spire.Doc 【邮件合并】教程(四):如何使用邮件合并合并图像值

    上一篇文章我们展示了如何使用 Spire.Doc创建邮件合并模板并将文本值合并到它.众所周知,除了文本值之外,我们还使用邮件合并功能来合并图像值.本文将演示如何在 C# 中将图像值合并到邮件合并模板中 ...

  4. Word控件Spire.Doc 【邮件合并】教程(五): 在 C# 中为组创建邮件合并

    在 Spire.Doc 中,我们可以使用邮件合并将数据源中的多条记录插入到 Word 模板文档中的指定区域.该区域必须由两个具有特殊名称的合并文件标记,如«GroupStart:GroupName»和 ...

  5. Word控件Spire.Doc 【邮件合并】教程(六): 使用 C# 识别 Word 中的合并字段名称

    我们经常遇到这样的场景,我们需要将数据合并到其他人创建的合并字段中,并且我们不确定合并字段的名称.所以为了完成邮件合并的目的,首先我们需要读取所有合并字段的名称. Spire.Doc for.NET ...

  6. Spire.Doc 教程:用C#识别Word中的合并字段名称

    2019独角兽企业重金招聘Python工程师标准>>> 我们经常遇到一个场景,就是需要将数据合并到由其他人创建的合并字段,我们不能确定合并字段的名称. 所以为了完成邮件合并的目的,首 ...

  7. 使用spire.doc实现word文档合并

    下载jar包: http://repo.e-iceblue.com/nexus/content/groups/public/e-iceblue/spire.doc/ maven配置: 在这里插入代码片 ...

  8. Java使用Spire.Doc将多个word里的内容合并到一个word里边,格式保留

    import com.spire.doc.*; /*** 合并word文档*/ public class MergeDocFile {//将2.doc合并到1里边,这是在1.doc里另开一页放的2.d ...

  9. Word控件Spire.Doc 【文档操作】教程(五):在 C#、VB.NET 中合并、设置多个 Word 文档

    合并Word就是把多个文档中的内容收集起来,然后合而为一.用户可以根据文档的内容对 Word 进行合并.本指南重点展示将 C# 和 VB.NET 中的 Word 与Spire.Doc for .NET ...

最新文章

  1. win7右键新建文件夹不见了
  2. 优化VS 2005编译,脱离漫长的等待!
  3. ARM构架之cache初探
  4. 改性沥青弹性恢复计算_阿里云计算的发展现状是什么,主要的产品有哪些?
  5. 垂直居中重要方法理解---重点是方法三
  6. AV1生态系统更新:2019年6月
  7. 如何查询编程语言或者网站里一些特殊符号的unicode编码
  8. Mysql 在DOS窗口下的操作
  9. 持续集成部署Jenkins工作笔记0018---18.Linux中安装Git客户端
  10. jQuery自己定义绑定的魔法升级版
  11. 微软产品无法通过代理连接互联网解决办法
  12. 一年工作经验,两周的面试,拿到几个offer的面试经验总结
  13. springboot集成solr实现全局搜索系列
  14. python倒数切片_python切片
  15. 台风怎么看内存颗粒_高体质CJR颗粒!七彩虹CVN捍卫者内存评测
  16. 20172328 2018-2019《Java软件结构与数据结构》第七周学习总结
  17. 在马来西亚如何回国?
  18. 根据屏幕大小动态设置字体rem
  19. 手动修改Spyder的背景颜色(手动配色)
  20. Jmeter对Web Socket进行压力测试 —— 200人直播课实战经验

热门文章

  1. Flink部署、使用、原理简介
  2. Spark源码打包编译的过程
  3. 使用openssl生成PEM格式私钥和公钥及ECDSA签名
  4. centos7搭建hadoop
  5. Java 核心五个类(File、Outputstream、Inputstream、Reader、Writer)一个接口(Serializable)...
  6. keepalive高可用nginx(nginx动静分离)的实现
  7. 跟我一起学习ASP.NET 4.5 MVC4.0(一)
  8. RESTful JSON Web服务最佳实践
  9. A1156. 开心的金明
  10. 微信小程序调试之【不在以下合法域名列表中】