我们已经介绍了如何在 C# 和 VB.NET 中比较两个 Word 文档。从 Spire.Doc V8.12.14 开始,它支持在结构列表中获取两个 Word 文档之间的差异。本文将向您展示如何使用 Spire.Doc 通过比较两个 Word 文档来获取差异。

Spire.Doc for.NET 最新下载

欢迎下载|体验更多E-iceblue产品 技术交流Q群(767755948)  

介绍

邮件合并通常用于批量打印报表,例如财务报表、工资单或成绩单。合并后的文件可以通过电子邮件发送。

在本文中,我将展示一种通过 Spire.Doc 生成邮件合并报告的方法。

步骤

我们需要完成以下 3 个步骤来生成我们的报告。

  • 创建邮件合并模板。
  • 从数据库加载数据。
  • 将数据合并到模板中并保存。

每个步骤都包含几个子步骤,在#2 和#3 中我们需要编写一些代码。

创建邮件合并模板

模板是可重用的文档。它呈现了我们报告的模式。我们可以修改它来更改我们的报告,而无需修改任何代码。

注意:在本节中,所有表均指 DataTable 实例,而不是数据库中的物理表。

首先,我们可以在 MS Word 或其他程序中创建模板。这是我们需要创建的模板。数据将填写在红方。

其次,将 mail-merge-field 作为占位符插入红块中。邮件合并字段分为三种类型:

  • GeneralField 是一个通用的 Word 邮件合并字段。这是真实的数据字段,我们的数据将在合并过程中填写。
  • TableField 是辅助邮件合并字段,用作多个相关 GeneralField 和其他 TableField 的容器。所以它不是数据占位符,不会填写任何数据。它由两个特殊的邮件合并字段组成: TableStart: TableNameTableEnd:TableName。在合并过程中,同一个 TableField 所包含的相关 GeneralField 的数据将来自同一个数据表。
  • GroupField 也是辅助邮件合并字段。它可以包含多个相关的 GeneralFields 和 TableFields。它由两个特殊的邮件合并字段组成: GroupStart: GroupName和 GroupEnd: GroupName。在合并过程中,将复制 GroupField 中包含的所有 Word 文档元素。数据表中的一行有一个副本,该行中的数据将填充到副本中的字段中。如果该行有子数据表,则子数据表中的数据将填充到相应的TableField中包含的字段中。如果子数据表有多个数据行,对应的TableField也会被复制填充。我们需要在模板正文的顶部插入一个名为GroupStart:Order的邮件合并字段,并插入一个名为的邮件合并字段GroupEnd:OrderM在模板主体的底部。

在此 Silverlight 应用程序中,我们仅使用 GeneralField。如下图所示。将邮件合并字段作为占位符插入红块。

加载数据

Spire.Doc 提供来自各种数据源的合并数据。该程序合并用户填充的字符串数组中的数据。

using Spire.Doc;
using System;
using System.IO;
namespace MailMerge
{
class Program
{
static void Main(string[] args)
{
String[] fieldNames
= new String[] { "Contact Name", "Fax", "From", "Date", "Subject", "Content" };
DateTime faxDate
= this.datePickerFaxDate.SelectedDate.HasValue ?
this.datePickerFaxDate.SelectedDate.Value : DateTime.Now;
String[] fieldValues
= new String[]
{
this.textBoxTo.Text,
this.textBoxFax.Text,
this.textBoxFrom.Text,
faxDate.ToShortDateString(),
this.textBoxSubject.Text,
this.textBoxContent.Text
};
this.documentTemplate.MailMerge.Execute(fieldNames, fieldValues);bool? result = this.saveFileDialog.ShowDialog();
if (result.HasValue && result.Value)
{
using (Stream stream = this.saveFileDialog.OpenFile())
{
//this.documentTemplate.SaveToStream(stream, FileFormat.Doc);
this.documentTemplate.SaveToFile(stream, FileFormat.Doc);
}}
}
}
}

将数据合并到模板中并保存

在本节中,我们需要编写一些代码来调用 Spire.Doc 来合并我们的数据和模板。this.documentTemplate.MailMerge.Execute(fieldNames, fieldValues);bool? result = this.saveFileDialog.ShowDialog();
if (result.HasValue && result.Value)
{
using (Stream stream = this.saveFileDialog.OpenFile())
{
//this.documentTemplate.SaveToStream(stream, FileFormat.Doc);
this.documentTemplate.SaveToFile(stream, FileFormat.Doc);
}
}

结果

Word控件Spire.Doc 【邮件合并】教程(二):如何在 Silverlight 中使用邮件合并相关推荐

  1. Word控件Spire.Doc 【页面设置】教程(5) 如何在 C# 中删除分页符

    在 Word 文档中,用户可以添加新的分页符或删除现有的分页符.此示例显示如何使用 Spire.Doc 从 word 文档中删除分页符.Spire.Doc支持从.docx..doc.RTF等格式的wo ...

  2. Word控件Spire.Doc 【Table】教程(16):C#/VB.NET:在 Word 表格中插入或提取图像

    Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库.在于帮助开发人员无需安装 Microsoft Word情况下,轻松快捷高效地创建.编辑.转换和打印 Micr ...

  3. Word控件Spire.Doc 【书签】教程(1):在C#/VB.NET:在 Word 中插入书签

    Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库.在于帮助开发人员无需安装 Microsoft Word情况下,轻松快捷高效地创建.编辑.转换和打印 Micr ...

  4. Word控件Spire.Doc 【Table】教程(7): 如何在C#中用表格替换word文档中的文本

    Spire.Doc for .NET 是一款专门对 Word 文档进行操作的 .NET 类库.在于帮助开发人员无需安装 Microsoft Word情况下,轻松快捷高效地创建.编辑.转换和打印 Mic ...

  5. Word控件Spire.Doc 【加密解密】教程(一):在 C#、VB.NET 中使用自定义密码加密、解密、保护 Word

    Word 加密是保护 Word 文档的一种方法,它要求用户为文档提供密码.没有密码,加密文件无法打开.本指南中的解决方案演示了如何通过 Spire.Doc for .NET 在 C# 和 VB.NET ...

  6. Word控件Spire.Doc 【页面背景】教程(9) ;C#/VB.NET:从 Word 文档中删除文本或图像水印

    可以将水印添加到 Word 文档中,以告知其他人文档的所有权或状态.有时,您可能希望删除 Word 文档中的现有水印.本文将演示如何使用Spire.Doc for .NET从 C# 和 VB.NET ...

  7. Word控件Spire.Doc 转换教程(九):在 Doc 转PDF 转换期间设置图像质量

    您可能会好奇为什么我们在将Doc 转换为 PDF时设置图像质量.在我们转换Word文档后,尤其是文档中有很多图像,输出的PDF文档的大小明显大于原始的Doc文件.现在,Spire.Doc 新版本的新功 ...

  8. Word控件Spire.Doc 【邮件合并】教程(四):如何使用邮件合并合并图像值

    上一篇文章我们展示了如何使用 Spire.Doc创建邮件合并模板并将文本值合并到它.众所周知,除了文本值之外,我们还使用邮件合并功能来合并图像值.本文将演示如何在 C# 中将图像值合并到邮件合并模板中 ...

  9. Word控件Spire.Doc 【邮件合并】教程(五): 在 C# 中为组创建邮件合并

    在 Spire.Doc 中,我们可以使用邮件合并将数据源中的多条记录插入到 Word 模板文档中的指定区域.该区域必须由两个具有特殊名称的合并文件标记,如«GroupStart:GroupName»和 ...

最新文章

  1. 机器学习常用术语词汇表
  2. idea中 maven打包时时报错User setting file does not exist C:\Users\lenevo\.m2\setting.xml,
  3. 构造函数,析构函数,对象连的简单应用
  4. java基础---serializable的作用
  5. java doc转pdf_java 完美解决 ppt/pptx 转pdf 源码
  6. 定义const变量是不可以赋值_JavaScript的声明方法和作用范围,常见的结构赋值类型和使用场景...
  7. StarkSoft题库管理系统
  8. 考研总分多少能去辽师_考研英语作文平均分出炉,你拖后腿了吗?
  9. android 圆点指示器,ViewPager加上小圆点指示器效果
  10. JavaScript正则表达式与注册验证
  11. 语言判断一个整数是奇数还是偶数_一个变量“存储”任意多的数 从“康托配对函数”聊开去...
  12. javascript时钟代码 DEMO-002
  13. 嵌入式软件开发的特点和流程
  14. 半部秘籍--分类、回归、集成与无监督
  15. 期货反向对冲核心思维跟单策略
  16. 经营养生理疗馆要注意什么问题?
  17. write-back与Write-through
  18. 确实实惠:海淘买鞋的经历:6PM +笨鸟海淘转运(单号: CN150625417260)
  19. SD卡的驱动(linux操作系统下)
  20. 结构体构造和析构函数

热门文章

  1. 查询数据总数_AkShare-股票数据-新股申购与中签
  2. STC15W408AS单片机通过ADC端口采集模拟量并从串口打印数值
  3. 怎样将java的class文件生成jar包
  4. java paho_Java Eclipse Paho实现-自动重新连接
  5. 智课雅思词汇---二、词根acu和acr
  6. kubernetes(k8s)集群安装calico
  7. Android横向ProgressBar
  8. 试用php语言写气泡,如何用纯CSS实现语音聊天气泡框效果
  9. 三个学生创业团队,就有一个会碰到股权分配问题
  10. Transformer正余弦位置编码理解