对于Word中的邮件合并功能,用户可以将邮件合并后的结果文档保存并打印,也可以通过邮件的形式发送,在很多场合需要使用到此功能。那对于编程人员,我们也可以在C#语言环境中通过代码的形式来实现。根据需要先创建邮件合并模板后,可合并文本和图片,在下面的方法中,需要使用到组件Free Spire.Doc for .NET。创建模板前,需先安装该组件,注意添加引用该组件dll文件到控制台应用程序中,同时添加命名空间。

一、创建邮件合并模板

第一步:添加命名空间

  1. using System;
  2. using Spire.Doc;
  3. using Spire.Doc.Documents;
  4. using System.Drawing;
  5. using Spire.Doc.Fields;

第二步:主要代码段

  1. //创建一个Document类对象,并添加Section
  2. Document document = new Document();
  3. Section section = document.AddSection();
  4.  
  5. //添加段落到Section,并向段落添加文字,设置文字颜色、字体粗细
  6. Paragraph paragraph = section.AddParagraph();
  7. TextRange tr = paragraph.AppendText("人 物 基 本 信 息");
  8. tr.CharacterFormat.TextColor = Color.YellowGreen;
  9. tr.CharacterFormat.Bold = true;
  10.  
  11. //添加文本,并添加合并域“Image:Portrait”
  12. paragraph.AppendText("\n人 物 肖 像 : ");
  13. paragraph.AppendField("Image:Portrait", FieldType.FieldMergeField);
  14.  
  15. //添加文本,并添加合并域“Name”
  16. paragraph.AppendText("\n姓 名 : ");
  17. paragraph.AppendField("Name", FieldType.FieldMergeField);
  18.  
  19. //添加文本,并添加合并域“Nation”
  20. paragraph.AppendText("\n民 族 :");
  21. paragraph.AppendField("Nation", FieldType.FieldMergeField);
  22.  
  23. //添加文本,并添加合并域“Nationality”
  24. paragraph.AppendText("\n国 籍 : ");
  25. paragraph.AppendField("Nationality", FieldType.FieldMergeField);
  26.  
  27. //添加文本,并添加合并域“Graduated From”
  28. paragraph.AppendText("\n院 校 : ");
  29. paragraph.AppendField("Graduated From", FieldType.FieldMergeField);
  30.  
  31. //保存并打开文档
  32. document.SaveToFile("模板.docx", FileFormat.Docx2013);
  33. System.Diagnostics.Process.Start("模板.docx");

完成以上步骤后,调试运行程序,生成文件(可在项目文件下bin>Debug中查看)

如下图:

二:合并文本、图片

在完成模板创建之后,可添加文本和图片,如下:

第一步:添加命名空间

  1. using System;
  2. using Spire.Doc;
  3. using System.Drawing;
  4. using Spire.Doc.Reporting;

第二步:主要代码段

  1. static void Main(string[] args)
  2. {
  3. //实例化一个Document类,并加载文档模板
  4. Document doc = new Document();
  5. doc.LoadFromFile(@"C:\Users\Administrator\Desktop\模板.docx");
  6. var textFieldNames = new string[] { "Name", "Nation", "Nationality", "Graduated From"};
  7. var textFieldValues = new string[] { "乔 治•华 盛 顿 (George Washington)", "美 利 坚 民 族", "美 国", "威 廉 与 玛 丽 学 院 (William and Mary)"};
  8. var imageFieldNames = new string[] { "Portrait" };
  9. var imageFieldValues = new string[] { @"C:\Users\Administrator\Desktop\images\华盛顿.jpg" };
  10.  
  11. //合并文本到模板
  12. doc.MailMerge.Execute(textFieldNames, textFieldValues);
  13.  
  14. //创建合并图片自定义事件
  15. doc.MailMerge.MergeImageField += new MergeImageFieldEventHandler(MailMerge_MergeImageField);
  16.  
  17. //合并图片到模板
  18. doc.MailMerge.Execute(imageFieldNames, imageFieldValues);
  19.  
  20. //保存并打开文档
  21. doc.SaveToFile("result.docx", FileFormat.Docx);
  22. System.Diagnostics.Process.Start("result.docx");
  23. }
  24. //添加自定义事件载入图片
  25. static void MailMerge_MergeImageField(object sender, MergeImageFieldEventArgs field)
  26. {
  27. string filePath = field.FieldValue as string;
  28. if (!string.IsNullOrEmpty(filePath))
  29. {
  30. field.Image = Image.FromFile(filePath);
  31. }
  32. }

运行程序,生成文件,如下图:

以上全部内容为本文创建邮件合并模板并合并文本和图片的方法讲述,方法中使用到的组件Spire.Doc for .NET在处理Word文档方面具有很好的辅助作用,感兴趣的话可以动手试试。如果本文对你有所帮助,欢迎转载(转载请注明出处)。

C# 创建邮件合并模板并合并文本、图片的更多相关文章

  1. Java 在Word中创建邮件合并模板并合并文本和图片

    Word里面的邮件合并功能是一种可以快速批量操作同类型数据的方式,常见的如数据填充.打印等.其中必不可少的步骤包括用于填充的模板文档.填充的数据源以及实现邮件合并的功能.下面,通过Java程序展示如何 ...

  2. [原创]Devexpress XtraReports 系列 9 创建邮件合并报表

    昨天发表了Devexpress XtraReports系列第八篇[原创]Devexpress XtraReports 系列 8 创建Drill-Through报表,今天我们继续. 今天的主题是创建邮件 ...

  3. 使用jquery合并表格中相同文本的相邻单元格

    一.效果 二.代码 <!DOCTYPE HTML> <html> <head> <title>Example</title> <met ...

  4. 【XDU1144】合并模板

    问题 Fate 有 n 个 ACM/ICPC 比赛的模板,每个都是一个独立的 PDF 文件.为了便于打印,万神希望将这些模板合并成一个 PDF 文件.万神有一个工具,可以将至多 k 个 PDF 文件合 ...

  5. 使用JavaMail创建邮件发送邮件

    一.RFC882文档简单说明 RFC882文档规定了如何编写一封简单的邮件(纯文本邮件),一封简单的邮件包含邮件头和邮件体两个部分,邮件头和邮件体之间使用空行分隔. 邮件头包含的内容有: from字段 ...

  6. JavaWeb学习总结(五十二)——使用JavaMail创建邮件和发送邮件

    一.RFC882文档简单说明 RFC882文档规定了如何编写一封简单的邮件(纯文本邮件),一封简单的邮件包含邮件头和邮件体两个部分,邮件头和邮件体之间使用空行分隔. 邮件头包含的内容有: from字段 ...

  7. (转载)JavaWeb学习总结(五十二)——使用JavaMail创建邮件和发送邮件

    博客源地址:http://www.cnblogs.com/xdp-gacl/p/4216311.html 一.RFC882文档简单说明 RFC882文档规定了如何编写一封简单的邮件(纯文本邮件),一封 ...

  8. JavaMail入门第二篇 创建邮件

    JavaMail API使用javax.mail.Message类来表示一封邮件,Message类是一个抽象类,所以我们需要使用其子类javax.mail.internet.MimeMessage类来 ...

  9. javaMail创建邮件和发送邮件总结

    (注: 本文是参考http://www.cnblogs.com/xdp-gacl/p/4216311.html. 感谢博主的精彩的描述) 一, 前期的准备 1, 导入 mail.jar 二, 操作步骤 ...

随机推荐

  1. XSS之偷梁换柱--盲打垃圾短信平台

    https://www.t00ls.net/thread-49742-1-1.html

  2. Javascript——浅谈 Event Flow

    1.Javascript Events : Event Bubbling(事件冒泡) 如果事件从最特定的元素开始,则事件流中的一个阶段称为事件冒泡(DOM中可能最深的节点)然后向上流向最不特定的节点( ...

  3. HBuilder git合作-从Git Hub Clone项目

    1.Clone项目 打开”Git Respository"视图,选“Clone a Git Respository" 2.为了能正确pull项目,所有队员都必须做以下配置(其始只是 ...

  4. LVM学习笔记

    LVM Logical Volume Manager Volume management creates a layer of abstraction over physical storage, a ...

  5. 【RL-TCPnet网络教程】第34章 RL-TCPnet之SMTP客户端

    第34章      RL-TCPnet之SMTP客户端 本章节为大家讲解RL-TCPnet的SMTP应用,学习本章节前,务必要优先学习第33章的SMTP基础知识.有了这些基础知识之后,再搞本章节会有事 ...

  6. Java Bloom filter几种实现比较

    英文原始出处: Bloom filter for Scala, the fastest for JVM 本文介绍的是用Scala实现的Bloom filter. 源代码在github上.依照性能测试结 ...

  7. MySQL常用存储引擎及如何选择

    一.MySQL的存储引擎 完整的引擎说明还是看官方文档:http://dev.mysql.com/doc/refman/5.6/en/storage-engines.html 这里介绍一些主要的引擎 ...

  8. 动态规划----最长递增子序列问题(LIS)

    题目: 输出最长递增子序列的长度,如输入 4 2 3 1 5 6,输出 4 (因为 2 3 5 6组成了最长递增子序列). 暴力破解法:这种方法很简单,两层for循环搞定,时间复杂度是O(N2). 动 ...

  9. [Swift]LeetCode839. 相似字符串组 | Similar String Groups

    Two strings X and Y are similar if we can swap two letters (in different positions) of X, so that it ...

  10. Storm学习笔记 - Storm初识

    Storm学习笔记 - Storm初识 1. Strom是什么? Storm是一个开源免费的分布式计算框架,可以实时处理大量的数据流. 2. Storm的特点 高性能,低延迟. 分布式:可解决数据量大 ...