用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文件