通过MegerField来循环,将数据保存到dataset的table中,dataset通过关联datarelation字段来指定主从表关系。模板中通过标签TableStart和TableEnd来框定table的作用范围,主从表可以多层嵌套。

aspose.words下载

1>画模板,用wps或微软的office画出下图表格,其中带《》的文本是域。嵌套循环用TableStart和TableEnd来界定作用范围。

1.1>wfs添加域,插入>>文档部件>>域>>邮件合并,见图一

1.2> office添加域,插入>>文档部件>>域>>MergeField,见图二

图一

图二

2>代码部分

        string templateFile = Server.MapPath("score_tmplt.doc");
string savePath = Server.MapPath("score.doc"); //用户表(主表)
DataTable userTable = new DataTable("UserList");
userTable.Columns.Add(new DataColumn("Id", typeof(int)));
userTable.Columns.Add("UserName");
userTable.Columns.Add("Gender");
userTable.Columns.Add("BirthDay");
userTable.Columns.Add("Address");
userTable.Rows.Add(1, "菜鸟程序员1", "男", "83年", "武汉");
userTable.Rows.Add(2, "菜鸟程序员2", "男", "88年", "武汉"); //分数表(从表)
DataTable userScoreTable = new DataTable("ScoreList");
userScoreTable.Columns.Add(new DataColumn("UserId", typeof(int)));
userScoreTable.Columns.Add(new DataColumn("Id", typeof(int)));
userScoreTable.Columns.Add("Name");
userScoreTable.Columns.Add("Score");
userScoreTable.Rows.Add(1, 1, "文科", "100");
userScoreTable.Rows.Add(1, 2, "理科", "100");
userScoreTable.Rows.Add(2, 3, "文科", "100"); //载入模板
var doc = new Document(templateFile);
//提供数据源
DataSet dataSet = new DataSet();
dataSet.Tables.Add(userTable);
dataSet.Tables.Add(userScoreTable);
//建立主从报表的关联
dataSet.Relations.Add(new DataRelation("ScoreListForUser", userTable.Columns["Id"], userScoreTable.Columns["UserId"])); //合并模版,相当于页面的渲染
doc.MailMerge.ExecuteWithRegions(dataSet);
doc.Save(savePath);

Aspose.Words五 MergeField的更多相关文章

  1. Aspose Word模板使用总结

    Aspose Word模板使用总结 1.创建word模版,使用MergeFeild绑定数据     新建一个Word文档,命名为Template.doc     注意:这里并不是输入"< ...

  2. aspose.word使用简单方法

    概念介绍 使用aspose生成word报表步骤: 加载word模板 提供数据源 填充 加载模板 提供了4种重载方法 public Document(); public Document(Stream ...

  3. Aspose.word总结

    1.创建word模版,使用MergeFeild绑定数据     新建一个Word文档,命名为Template.doc     注意:这里并不是输入"<”和“>”就可以了,而是必须 ...

  4. 使用Aspose.Cells利用模板导出Excel(C#)

    前言 随着互联网的流行,web项目逐渐占据主流.我相信大部分人开发项目的过程中都写过上传以及导出Excel和Word的功能,本文仅讨论导出Excel.C#中有很多第三方组件支持导出Excel,比如:N ...

  5. Pdf文件处理组件对比(Aspose.Pdf,Spire.Pdf,iText7)

    目的 因为公司是做医疗相关软件的,所以经常和文档打交道,其中就包含了Pdf.医院的Pdf(通常是他们的报告)都千奇百怪,而我们一直以来都是在用一些免费且可能已经没人维护了的组件来处理Pdf,所以就经常 ...

  6. aspose.word 使用简单方法

    aspose.word使用简单方法 概念介绍 使用aspose生成word报表步骤: 加载word模板 提供数据源 填充 加载模板 提供了4种重载方法 1 2 3 4 5 public Documen ...

  7. Aspose.Words导出图片 表格 Interop.Word

    先定义一个WORD 模板, 然后替换文本.域 ,定位开始表格 文本和段落 // Specify font formatting Aspose.Words.Font font = builder.Fon ...

  8. WPF使用Aspose.Words导出Word文档

    一.创建Word文档模板 分析需要导出的word文档,将固定的内容和由程序生成的内容分开; 创建一个word(例如:Template.doc)文档,将固定的内容按照一定的格式写入当前文档中; 打开Te ...

  9. 使用Aspose.word (Java) 填充word文档数据(包含图片填充)

    Aspose填充word数据 本文介绍了如何使用aspose进行word文档的生成,并提供了工具类供参考. 有问题欢迎 call 微信:905369866,小弟尽力而为..毕竟这玩意没吃透. 目录 A ...

随机推荐

  1. 知识点4: 配置echarts折线图和饼图

    折线图 效果图 html <template> <div id="v11-charts3"></div> </template> j ...

  2. 【原创】锐捷实现OSPF路由协议和NAT地址转换协议

    路由网络设计与实施 [锐捷设备实现OSPF路由协议与NAT地址转换] 说明:   本文是在多VLAN双星型交换网络的基础之上发展的.关于组建多VLAN双星型交换网络,请参阅: <思科和锐捷组建多 ...

  3. 简单全局HOOK拦截大部分键盘消息

    前言:学习HOOK中,万一老师讲解HOOK入门教程:http://www.cnblogs.com/del/category/124150.html http://www.cnblogs.com/del ...

  4. 23.网络.md

    目录 1.基本概念 2.常用函数 3.端口 4.协议 4.1.2代码步骤 4.1.3UDPDemo 4.1.4通信格式 4.1.5 群发Demo: 4.1.6丢失数据的情况 4.2TCP 4.2.1三 ...

  5. Ubuntu中更改所有子文件和子目录所有者权限

    转自:http://www.linuxidc.com/Linux/2015-03/114695.htm Ubuntu中有两个修改命令可以用到,「change mode」&「change own ...

  6. Python gevent

    1\协程 import geventfrom gevent import monkeyimport requestsfrom bs4 import BeautifulSoupimport thread ...

  7. java工程师基础笔试题(一)

    一.选择和填空  (不定项哦!) 1,如下是一份文件名为Test2.java的源文件,请问,编译该文件之后会生成几份字节码文件 class Test{ class Inner{} static cla ...

  8. Link & Redirect

    [Link] Link标签,用于实现React-Router功能的跳转.(意思是就不要使用a标签了) 1)to:string,指明要跳转的path. import { Link } from 'rea ...

  9. ORA-30926: 无法在源表中获得一组稳定的行ORA-06512: 在 "STG.FP_MO_SPLIT", line 1562 临时

  10. JSF web.xml的各类参数属性配置

    出处:http://www.cnblogs.com/zxpgo/articles/2570175.html 感谢作者的分享!! ———————————————————————————————————— ...