用Spire.doc来合并邮件

mac2022-06-30  90

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

 

输出结果截图:

 

 

 

 

转载于:https://www.cnblogs.com/Yesi/p/4218254.html

相关资源:Spire.doc安装及dll文件
最新回复(0)