用Spire.doc来合并邮件

简介: 用Spire.doc来合并邮件   让我们想象一下这样的场景:你在一家IT公司上班。某天公司的某一产品大幅度升级了。然后你需要通知所有的客户。

                               用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;
     }
  }
}

 

输出结果截图:

 

 

 

 

目录
相关文章
|
存储 Java Linux
Springboot 超简单实现在线预览,Word文档 doc、xlsx、pdf、txt等
Springboot 超简单实现在线预览,Word文档 doc、xlsx、pdf、txt等
2345 0
Springboot 超简单实现在线预览,Word文档 doc、xlsx、pdf、txt等
Word处理控件Spire.Doc常见问题解答
为方便使用者快速掌握和了解Spire.Doc,本文列举了Word处理控件Spire.Doc常见问题及解答欢迎下载体验!
|
前端开发 C#
C# 基于NPOI+Office COM组件 实现20行代码在线预览文档(word,excel,pdf,txt,png)
C# 基于NPOI+Office COM组件 实现20行代码在线预览文档(word,excel,pdf,txt,png)
|
3月前
|
XML 存储 C#
自己动手做一个批量doc转换为docx文件的小工具
自己动手做一个批量doc转换为docx文件的小工具
70 0
|
5月前
|
XML 存储 安全
doc 和 docx 文件的区别
doc 和 docx 文件的区别
244 5
|
5月前
|
XML 存储 安全
探索 doc 和 docx 文件格式的区别
探索 doc 和 docx 文件格式的区别
151 3
|
6月前
|
XML Go 数据格式
Go如何自动解压缩包?如何读取docx/doc文件内容?
在开发过程中,我们常常需要处理压缩包和文档文件。本文将介绍如何使用Go语言自动解压缩包和读取docx/doc文件。
|
XML JSON 开发框架
盘点5个C#实用的Word、PPT、Excel、Mail第三方库
盘点5个C#实用的Word、PPT、Excel、Mail第三方库
235 0
|
前端开发
前端实现在线预览文档(pdf、doc文件)
前端实现在线预览文档(pdf、doc文件)