zoukankan      html  css  js  c++  java
  • C# 创建邮件合并模板并合并文本、图片

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

    一、创建邮件合并模板

    第一步:添加命名空间

    using System;
    using Spire.Doc;
    using Spire.Doc.Documents;
    using System.Drawing;
    using Spire.Doc.Fields;

    第二步:主要代码段

    //创建一个Document类对象,并添加Section
    Document document = new Document();
    Section section = document.AddSection();
    
    //添加段落到Section,并向段落添加文字,设置文字颜色、字体粗细
    Paragraph paragraph = section.AddParagraph();
    TextRange tr = paragraph.AppendText("人 物 基 本 信 息");
    tr.CharacterFormat.TextColor = Color.YellowGreen;
    tr.CharacterFormat.Bold = true;
    
    //添加文本,并添加合并域“Image:Portrait”
    paragraph.AppendText("
    人 物 肖 像 : ");
    paragraph.AppendField("Image:Portrait", FieldType.FieldMergeField);
    
    //添加文本,并添加合并域“Name”
    paragraph.AppendText("
    姓 名 : ");
    paragraph.AppendField("Name", FieldType.FieldMergeField);
    
    //添加文本,并添加合并域“Nation”
    paragraph.AppendText("
    民 族 :");
    paragraph.AppendField("Nation", FieldType.FieldMergeField);
    
    //添加文本,并添加合并域“Nationality”
    paragraph.AppendText("
    国 籍 : ");
    paragraph.AppendField("Nationality", FieldType.FieldMergeField);
    
    //添加文本,并添加合并域“Graduated From”
    paragraph.AppendText("
    院 校 : ");
    paragraph.AppendField("Graduated From", FieldType.FieldMergeField);
    
    //保存并打开文档
    document.SaveToFile("模板.docx", FileFormat.Docx2013);
    System.Diagnostics.Process.Start("模板.docx");

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

    如下图:

    二:合并文本、图片

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

    第一步:添加命名空间

    using System;
    using Spire.Doc;
    using System.Drawing;
    using Spire.Doc.Reporting;

    第二步:主要代码段

    static void Main(string[] args)
            {
                //实例化一个Document类,并加载文档模板
                Document doc = new Document();
                doc.LoadFromFile(@"C:UsersAdministratorDesktop模板.docx");
                var textFieldNames = new string[] { "Name", "Nation", "Nationality", "Graduated From"};
                var textFieldValues = new string[] { "乔 治•华 盛 顿 (George Washington)", "美 利 坚 民 族", "美 国", "威 廉 与 玛 丽 学 院 (William and Mary)"};
                var imageFieldNames = new string[] { "Portrait" };
                var imageFieldValues = new string[] { @"C:UsersAdministratorDesktopimages华盛顿.jpg" };
    
                //合并文本到模板
                doc.MailMerge.Execute(textFieldNames, textFieldValues);
    
                //创建合并图片自定义事件
                doc.MailMerge.MergeImageField += new MergeImageFieldEventHandler(MailMerge_MergeImageField);
    
                //合并图片到模板
                doc.MailMerge.Execute(imageFieldNames, imageFieldValues);
    
                //保存并打开文档
                doc.SaveToFile("result.docx", FileFormat.Docx);
                System.Diagnostics.Process.Start("result.docx");
            }
            //添加自定义事件载入图片
            static void MailMerge_MergeImageField(object sender, MergeImageFieldEventArgs field)
            {
                string filePath = field.FieldValue as string;
                if (!string.IsNullOrEmpty(filePath))
                {
                    field.Image = Image.FromFile(filePath);
                }
            }

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

     

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

  • 相关阅读:
    win8.1下解决Visual C++不兼容的方法
    Java文件File类学习总结
    Java可视化日历(Date类、DATe Format类、Calendar类综合运用),开发可视化日历小程序
    java时间日期类(Date、DateFormat、Calendar)学习
    使用SimpleDateFormat类来实现时间跟字符串的转化
    Java中运行时异常和非运行时异常什么鬼?
    Java构造器练习题
    Word中一条删除不掉的单或双横线的解决办法
    Java中常用类(包装类扩展知识)
    Java异常学习总结二
  • 原文地址:https://www.cnblogs.com/Yesi/p/8194556.html
Copyright © 2011-2022 走看看