有些通知书、通用信函、座位表、准考证之类的,一次性要做很多份,使用word中的邮件合并功能几分钟就可以制作成百上千份,用C#代码更是一键完工,那么哪一个才最省事儿呢?
需要一份excel文件,文件中存放了每个人的信息。
需要一份word的模板。以录取通知书为例,首先在word中插入背景图片,接着在图片上插入文本框,并输入必要的文字,除了个人信息之外的,其他的内容都填写完整,并排版好。
切换到“邮件”菜单下,点击“选择收件人”,接着点击“使用现有列表”,然后打开excel信息表。
切换到“邮件”菜单下,点击“选择收件人”,接着点击“使用现有列表”,然后打开excel信息表。
点击姓名所在的位置,接着点击“插入合并域”,选择“姓名”,然后点击“插入”。
重复步骤3,直到把所有的个人信息域都添加斤模板为止。最后点击“完成并合并”下的“编辑单个文档”,并点击“全部”,点击“确定”。
这种方式适用于小数量单批次使用,比如座次表、通知信件什么的,如果是反复使用、大量数据的邮件,请看下方用代码实现的邮件合并方式。
来看看我们的实现代码:
using System; using System.Windows.Forms; using Spire.Doc; namespace MailMerage { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Document document = new Document(); document.LoadFromFile(@"..\..\..\..\..\..\Data\邮件合并模板.doc"); // 如果是多个数据源,用foreach、for等循环赋值、保存 string[] filedNames = new string[]{"Contact Name","Fax","Date"};//字段 string[] filedValues = new string[]{"John Smith","+1 (69) 123456",System.DateTime.Now.Date.ToString()};//给字段复制 document.MailMerge.Execute(filedNames, filedValues); //执行赋值 document.SaveToFile("邮件合并.doc", FileFormat.Doc);//保存 } } }