Aspose Word模板使用总结

Aspose Word模板使用总结

1.创建word模版,使用MergeFeild绑定数据

新建一个Word文档,命名为Template.doc

注意:这里并不是输入"《”和“》”就可以了,而是必须在菜单的"插入→文档部件→域”找到MergeField并输入相应的域名

2.使用数组提供数据源

string tempPath = Server.MapPath("~/Docs/Temp/Template.doc");

string outputPath = Server.MapPath("~/Docs/Output/Template.doc");

//载入模板

var doc = new Document(tempPath);

//提供数据源

String[] fieldNames = new String[] {"UserName", "Gender", "BirthDay", "Address"};

Object[] fieldValues = new Object[] {"张三", "男", "1988-09-02", "陕西咸阳"};

//合并模版,相当于页面的渲染

doc.MailMerge.Execute(fieldNames, fieldValues);

//保存合并后的文档

doc.Save(outputPath);

//在WebForm中,保存文档到流中,使用Response. BinaryWrite输出该文件

var docStream = new MemoryStream();

doc.Save(docStream, SaveOptions.CreateSaveOptions(SaveFormat.Doc));

Response.ContentType = "application/msword";

Response.AddHeader("content-disposition", "attachment;  filename=Template.doc");

Response.BinaryWrite(docStream.ToArray());

Response.End();

//在MVC中采用,保存文档到流中,使用base.File输出该文件

var docStream = new MemoryStream();

doc.Save(docStream, SaveOptions.CreateSaveOptions(SaveFormat.Doc));

return base.File(docStream.ToArray(), "application/msword","Template.doc");

3.创建循环数据的模版,这里的循环数据类似页面的for结构,不拘泥于形式table

«TableStart:UserList»

姓名:«UserName»

«TableEnd:UserList»

4.使用DataTable提供数据源

//创建名称为UserList的DataTable

DataTable table=new DataTable("UserList");

table.Columns.Add("UserName");

table.Columns.Add("Gender");

table.Columns.Add("BirthDay");

table.Columns.Add("Address");

//----------------------------------------------------------------------------------------------------

//载入模板

var doc = new Document(tempPath);

//提供数据源

var datatable= GetDataTable();

//合并模版,相当于页面的渲染

doc.MailMerge.ExecuteWithRegions(datatable);

var docStream = new MemoryStream();

doc.Save(docStream, SaveOptions.CreateSaveOptions(SaveFormat.Doc));

return base.File(docStream.ToArray(), "application/msword","Template.doc");

 5.绑定带有子循环数据模版

6.使用DataSet提供数据源

//用户表结构

DataTable table = new DataTable("UserList");

table.Columns.Add(new DataColumn("Id", typeof(int)));

table.Columns.Add("UserName");

table.Columns.Add("Gender");

table.Columns.Add("BirthDay");

table.Columns.Add("Address");

//分数表结构

DataTable table = new DataTable("ScoreList");

table.Columns.Add(new DataColumn("UserId", typeof(int)));

table.Columns.Add("Name");

table.Columns.Add("Score");

//----------------------------------------------------------------------------------------------------

//载入模板

var doc = new Document(tempPath);

//提供数据源

DataSet dataSet = new DataSet();

var userTable= GetUserDataTable();

var userScoreTable= GetUserScoreDataTable();

dataSet.Tables.Add(userTable);

dataSet.Tables.Add(userScoreTable);

dataSet.Relations.Add(new DataRelation("ScoreListForUser",userTable.Columns["Id"], userScoreTable.Columns["UserId"]));

//合并模版,相当于页面的渲染

doc.MailMerge.ExecuteWithRegions(dataSet);

var docStream = new MemoryStream();

doc.Save(docStream, SaveOptions.CreateSaveOptions(SaveFormat.Doc));

return base.File(docStream.ToArray(), "application/msword","Template.doc");

7.模版上使用书签,插入标记位置

选中文档中的文字,在菜单的"插入→书签”指定书签的名称,排序依据选定为位置,添加一个新书签。选中的文字为书签的Text属性,这里是为了方便查看。也可以直接插入一个书签并指定位置,只是不明显。

8.在书签位置插入另一个文档的内容

//载入模板

var doc = new Document(tempPath);

var doc1 = new Document(tempPath1);//新文档

//找到名称为PositionFlag的书签

var bookmark= doc.Range.Bookmarks["PositionFlag"];

//清空书签的文本

bookmark.Text = "";

//使用DocumentBuilder对象插入一些文档对象,如插入书签,插入文本框,插入复选框,插入一个段落,插入空白页,追加或另一个word文件的内容等。

var builder = new DocumentBuilder(doc);

//定位到指定位置进行插入操作

builder.MoveToBookmark("PositionFlag");

//在PositionFlag书签对应的位置,插入另一个文档的内容。

//InsertDocument方法可以在http://www.aspose.com/docs/display/wordsnet/How+to++Insert+a+Document+into+another+Document找到

InsertDocument(bookmark.BookmarkStart.ParentNode, doc1);

时间: 2024-08-11 12:38:46

Aspose Word模板使用总结的相关文章

利用Aspose.Word控件和Aspose.Cell控件,实现Word文档和Excel文档的模板化导出

我们知道,一般都导出的Word文档或者Excel文档,基本上分为两类,一类是动态生成全部文档的内容方式,一种是基于固定模板化的内容输出,后者在很多场合用的比较多,这也是企业报表规范化的一个体现. 我的博客介绍过几篇关于Aspose.Word控件和Aspose.Cell控件的使用操作,如下所示. <使用Aspose.Cell控件实现Excel高难度报表的生成(一)> <使用Aspose.Cell控件实现Excel高难度报表的生成(二)> <使用Aspose.Cell控件实现Ex

java使用Aspose向word模板写入数据

Aspose.Words是一个商业.NET类库,可以使得应用程序处理大量的文件任务.Aspose.Words支持Doc,Docx,RTF,HTML,OpenDocument,PDF,XPS,EPUB和其他格式.使用Aspose.Words可以在不使用Microsoft.Word的情况下生成.修改.转换和打印文档. 1.Aspose在maven下的包引用,例如: <dependency> <groupId>com.mlsc</groupId> <artifactId

黄聪:利用Aspose.Word控件实现Word文档的操作(转)

撰写人:伍华聪  http://www.iqidi.com  Aspose系列的控件,功能都挺好,之前一直在我的Winform开发框架中用Aspose.Cell来做报表输出,可以实现多样化的报表设计及输出,由于一般输出的内容比较正规化或者多数是表格居多,所以一般使用Aspose.Cell来实现我想要的各种Excel报表输出.虽然一直也知道Aspose.Word是用来生成Word文档的,而且深信其也是一个很强大的控件,但一直没用用到,所以就不是很熟悉. 偶然一次机会,一个项目的报表功能指定需要导出

利用Aspose.Word控件实现Word文档的操作

Aspose系列的控件,功能都挺好,之前一直在我的Winform开发框架中用Aspose.Cell来做报表输出,可以实现多样化的报表设计及输出,由于一般输出的内容比较正规化或者多数是表格居多,所以一般使用Aspose.Cell来实现我想要的各种Excel报表输出.虽然一直也知道Aspose.Word是用来生成Word文档的,而且深信其也是一个很强大的控件,但一直没用用到,所以就不是很熟悉. 偶然一次机会,一个项目的报表功能指定需要导出为Word文档,因此寻找了很多篇文章,不过多数介绍的比较简单一

aspose.word使用简单方法

概念介绍 使用aspose生成word报表步骤: 加载word模板 提供数据源 填充 加载模板 提供了4种重载方法 ? 1 2 3 4 5 public Document(); public Document(Stream stream); public Document(string fileName); public Document(Stream stream, LoadOptions loadOptions); public Document(string fileName, LoadO

转载wuhuacong(伍华聪)的专栏 利用Aspose.Word控件实现Word文档的操作 (留作笔记)

Aspose系列的控件,功能都挺好,之前一直在我的Winform开发框架中用Aspose.Cell来做报表输出,可以实现多样化的报表设计及输出,由于一般输出的内容比较正规化或者多数是表格居多,所以一般使用Aspose.Cell来实现我想要的各种Excel报表输出.虽然一直也知道Aspose.Word是用来生成Word文档的,而且深信其也是一个很强大的控件,但一直没用用到,所以就不是很熟悉. 偶然一次机会,一个项目的报表功能指定需要导出为Word文档,因此寻找了很多篇文章,不过多数介绍的比较简单一

Aspose.Word控件实现word操作

关于Aspose.Word控件的介绍,请戳→ http://www.cnblogs.com/asxinyu/p/3242754.html 首先需要去下载这个dll文件,然后引用到你的项目当中.地址→http://download.csdn.net/detail/wo_shi_chuan_qi_007/7332127 利用书签把数据写入到Word当中 文本和图片 第一步,你先要去准备Word模板(新建一个Word然后复制到项目中) 第二步,在Word模板中插入书签 在word中准备你需要把数据填写

利用模板导出文件(二)之jacob利用word模板导出word文件(Java2word)

先下载jacob.jar包. 解压后将jacob.dll放到windows/system32以下或\jre\bin以下. 将jacob.jar增加项目. 这样项目的环境基本上搭建完毕,接下来就是书写相关的代码: /** * 传入数据为HashMap对象,对象中的Key代表word模板中要替换的字段.Value代表用来替换的值. * word模板中全部要替换的字段(即HashMap中的Key)以特殊字符开头和结尾. * 如:$code$.$date$--.以免执行错误的替换. * 全部要替换为图片

利用POI 技术动态替换word模板内容

项目中需要实现一个功能,动态替换给定模板里面的内容,生成word文档提供下载功能. 中间解决了问题有: 1.页眉的文档logo图片解决,刚开始的时候,HWPFDocument 对象无法读取图片对象(已测试) 2.文档的水印也无法读取 3.下载的乱码问题(火狐浏览器) 4.将文档中的阿拉伯数字的金额改为中文繁体显示 具体代码如下: /** * 拍卖结算之后,进行成交确认书的下载操作方法 * * @param id * @param response */ @RequestMapping(value