加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

用Spire.doc来合并邮件

发布时间:2020-12-16 01:07:05 所属栏目:百科 来源:网络整理
导读:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 用 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.docviewer?the?result?file.
? ? ?System.Diagnostics.Process.Start(");
? }
?
void?MailMerge_MergeField(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
{
???string?m_contactName;
???string?ContactName
? ? ?{
? ? ? ??get
? ? ? ? {
??????????return?m_contactName;
? ? ? ? ?}
????????set
? ? ? ? {
? ? ? ? ? ?m_contactName?=?value;
? ? ? ? ?}
? ? }
?
string?m_fax;
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;
? ? ?}
? }
}

?

输出结果截图:

?

?

?

?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读