有些通知书、通用信函、座位表、准考证之类的,一次性要做很多份,使用word中的邮件合并功能几分钟就可以制作成百上千份,用C#代码更是一键完工,那么哪一个才最省事儿呢?
方法1:Excel+word邮件合并的步骤
需要一份excel文件,文件中存放了每个人的信息。
需要一份word的模板。以录取通知书为例,首先在word中插入背景图片,接着在图片上插入文本框,并输入必要的文字,除了个人信息之外的,其他的内容都填写完整,并排版好。
切换到“邮件”菜单下,点击“选择收件人”,接着点击“使用现有列表”,然后打开excel信息表。
切换到“邮件”菜单下,点击“选择收件人”,接着点击“使用现有列表”,然后打开excel信息表。
点击姓名所在的位置,接着点击“插入合并域”,选择“姓名”,然后点击“插入”。
重复步骤3,直到把所有的个人信息域都添加斤模板为止。最后点击“完成并合并”下的“编辑单个文档”,并点击“全部”,点击“确定”。
这种方式适用于小数量单批次使用,比如座次表、通知信件什么的,如果是反复使用、大量数据的邮件,请看下方用代码实现的邮件合并方式。
方法2:C#实现邮件合并
- 先下载Spire.Doc for .NET功能类库,并引用到软件的程序集;
- 再制作一个word的模板;
- 代码实现,引入来自数据源的字段,并在代码中绑定word模板中的字段,当即完工!
来看看我们的实现代码:
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);//保存
}
}
}