Aspose Word模板使用总结

摘要:
stringutputPath=Server.MapPath(“~/Docs/Output/Template.doc”);“attachment;Response.End();table.Columns.Add(”UserName“);table.Solumns.Add(”性别“);table.Column.Add(”出生日“);”;
 
原文链接:http://www.cnblogs.com/birchlee/archive/2013/05/23/3094632.html
 
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(bookmark.BookmarkStart.ParentNode, doc1);

免责声明:文章转载自《Aspose Word模板使用总结》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇mysqldump: Got error: 1356 mysqldump的重要参数--force关于网卡的知识(一台电脑到底有多少块网卡)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C# DataTable 操作

添加引用 using System.Data; 创建表 //创建一个空表 DataTable dt = new DataTable(); //创建一个名为"Table_New"的空表 DataTable dt = new DataTable("Table_New"); 创建列 //1.创建空列 DataColumn dc = new DataColum...

使用MQTTBox连接MindSphere IoT Extention

==静态模板== https://cumulocity.com/guides/device-sdk/mqtt/#mqtt-static-templates  ==创建连接== 打开MQTTBox,在Client创建界面中输入相应信息: 【MQTT Client Name】Client识别名 【MQTT Client Id】可使用 “Generate a r...

用Delphi进行word开发

使用以CreateOleObjects方式调用Word 实际上还是Ole,但是这种方式能够真正做到完全控制Word文件,能够使用Word的所有属性,包括自己编写的VBA宏代码。----------------------------------------- Word宏编辑器Word能够真正地进行VBA代码的编辑,可以编写窗体、函数。进入Word宏编辑器的...

推荐个开源在线文档,助道友领悟 Django 之“道”

本文面向有手(需要一点点 Python Django 基础)的小伙伴,急需文档管理者食用最佳。 作者:HelloGitHub-吱吱(首发于 HelloGitHub 公众号) 嗷嗷待哺的小白:“今天又是沉迷花里胡哨博客的一天,我希望归档一类知识或者是连载一些教程,而博客都是一篇篇散落的,没有连贯性,阅读体验不太良好,怎么办呢?” HelloGitHub:“...

Java解析word,获取文档中图片位置

前言(背景介绍): Apache POI是Apache基金会下一个开源的项目,用来处理office系列的文档,能够创建和解析word、excel、ppt格式的文档。 其中对word文档的处理有两个技术,分别是HWPF(.doc)和XWPF(.docx)。如果你对这两个技术熟悉的话,就应该能明白使用java解析word文档的痛楚所在。 其中两个最大的问题在于...

使用Jacob与Word文件交互

转自:http://www.blogjava.net/lonsy/archive/2009/01/09/250713.html Jacob项目的官方地址: Http://sourceforge.net/projects/jacob-project/官方介绍:    JACOB is a JAVA-COM Bridge that allows you to...