Aspose Word模板使用总结.docx

上传人:b****8 文档编号:9120814 上传时间:2023-02-03 格式:DOCX 页数:12 大小:201.61KB
下载 相关 举报
Aspose Word模板使用总结.docx_第1页
第1页 / 共12页
Aspose Word模板使用总结.docx_第2页
第2页 / 共12页
Aspose Word模板使用总结.docx_第3页
第3页 / 共12页
Aspose Word模板使用总结.docx_第4页
第4页 / 共12页
Aspose Word模板使用总结.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

Aspose Word模板使用总结.docx

《Aspose Word模板使用总结.docx》由会员分享,可在线阅读,更多相关《Aspose Word模板使用总结.docx(12页珍藏版)》请在冰豆网上搜索。

Aspose Word模板使用总结.docx

AsposeWord模板使用总结

AsposeWord模板使用总结

命名空间:

1.usingAspose.Words;

2.usingAspose.Words.Saving;

3.usingSystem.IO;

4.usingSystem.Data;

添加dll:

链接:

 密码:

bv3k

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

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

   注意:

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

2.使用数组提供数据源

1.stringtempPath=Server.MapPath("~/Docs/Temp/Template.doc");

2.stringoutputPath=Server.MapPath("~/Docs/Output/Template.doc");

3.//载入模板

4.vardoc=newDocument(tempPath);

5.//提供数据源

6.String[]fieldNames=newString[]{"UserName","Gender","BirthDay","Address"};

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

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

9.doc.MailMerge.Execute(fieldNames,fieldValues);

10.//保存合并后的文档

11.doc.Save(outputPath);

12.//在WebForm中,保存文档到流中,使用Response.?

BinaryWrite输出该文件

13.vardocStream=newMemoryStream();

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

15.Response.ContentType="application/msword";

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

17.Response.BinaryWrite(docStream.ToArray());

18.Response.End();

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

20.vardocStream=newMemoryStream();

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

22.returnbase.File(docStream.ToArray(),"application/msword","Template.doc");

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

  «TableStart:

UserList»

  姓名:

«UserName»

  «TableEnd:

UserList»

  

4.使用DataTable提供数据源

1.//创建名称为UserList的DataTable

2.DataTabletable=newDataTable("UserList");

3.table.Columns.Add("UserName");

4.table.Columns.Add("Gender");

5.table.Columns.Add("BirthDay");

6.table.Columns.Add("Address");

7.//----------------------------------------------------------------------------------------------------

8.//载入模板

9.vardoc=newDocument(tempPath);

10.//提供数据源

11.vardatatable=GetDataTable();

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

13.doc.MailMerge.ExecuteWithRegions(datatable);

14.vardocStream=newMemoryStream();

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

16.returnbase.File(docStream.ToArray(),"application/msword","Template.doc"); 

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

6.使用DataSet提供数据源

1.//用户表结构

2.DataTabletable=newDataTable("UserList");

3.table.Columns.Add(newDataColumn("Id",typeof(int)));

4.table.Columns.Add("UserName");

5.table.Columns.Add("Gender");

6.table.Columns.Add("BirthDay");

7.table.Columns.Add("Address");

8.//分数表结构

9.DataTabletable=newDataTable("ScoreList");

10.table.Columns.Add(newDataColumn("UserId",typeof(int)));

11.table.Columns.Add("Name");

12.table.Columns.Add("Score");

13.//----------------------------------------------------------------------------------------------------

14.//载入模板

15.vardoc=newDocument(tempPath);

16.//提供数据源

17.DataSetdataSet=newDataSet();

18.varuserTable=GetUserDataTable();

19.varuserScoreTable=GetUserScoreDataTable();

20.dataSet.Tables.Add(userTable);

21.dataSet.Tables.Add(userScoreTable);

22.dataSet.Relations.Add(newDataRelation("ScoreListForUser",userTable.Columns["Id"],?

userScoreTable.Columns["UserId"]));

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

24.doc.MailMerge.ExecuteWithRegions(dataSet);

25.vardocStream=newMemoryStream();

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

27.returnbase.File(docStream.ToArray(),"application/msword","Template.doc");

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

选中文档中的文字,在菜单的"插入→书签”指定书签的名称,排序依据选定为位置,添加一个新书签。

选中的文字为书签的Text属性,这里是为了方便查看。

也可以直接插入一个书签并指定位置,只是不明显。

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

1.//载入模板

2.vardoc=newDocument(tempPath);

3.vardoc1=newDocument(tempPath1);//新文档

4.//找到名称为PositionFlag的书签

5.varbookmark=doc.Range.Bookmarks["PositionFlag"];

6.//清空书签的文本

7.bookmark.Text="";

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

9.varbuilder=newDocumentBuilder(doc);

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

11.builder.MoveToBookmark("PositionFlag");

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

13.//InsertDocument方法可以在

14.InsertDocument(bookmark.BookmarkStart.ParentNode,doc1);

9.创建word模版,使用MergeFeild插入图片

10.插入图片示例

1.stringtempPath=Server.MapPath("~/Docs/Temp/Template.doc");

2.stringlogoPath=Server.MapPath("~/Content/logo.jpg");

3.vardoc=newDocument(tempPath);//载入模板

4.//提供数据源

5.String[]fieldNames=newString[]{"logo","Gender","BirthDay","Address","Logo"};

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

7.//增加处理图片大小程序

8.//doc.MailMerge.FieldMergingCallback=newHandleMergeFieldInsertDocument();

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

10.doc.MailMerge.Execute(fieldNames,fieldValues);

11.

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

13.vardocStream=newMemoryStream();

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

15.returnbase.File(docStream.ToArray(),"application/msword","Template.doc");

 效果如下:

  

 增加图片大小处理的程序

1.//Aspose.Word提供了一个类似Handler的功能,IFieldMergingCallback允许我们动态的处理MergeField

2.voidIFieldMergingCallback.FieldMerging(FieldMergingArgse){}//处理文本

3.voidIFieldMergingCallback.ImageFieldMerging(ImageFieldMergingArgsargs){}//处理图片

4.//这里我们处理图片写了一个自定义的类实现

5.classHandleMergeFieldInsertDocument:

IFieldMergingCallback

6.{

7.    //文本处理在这里,如果写在这一块,则不起作用

8.    voidIFieldMergingCallback.FieldMerging(FieldMergingArgse)

9.    {

10.

11.    }

12.    //图片处理在这里

13.    voidIFieldMergingCallback.ImageFieldMerging(ImageFieldMergingArgsargs)

14.    {

15.        if(args.DocumentFieldName.Equals("Logo"))

16.        {

17.            //使用DocumentBuilder处理图片的大小

18.            DocumentBuilderbuilder=newDocumentBuilder(args.Document);

19.            builder.MoveToMergeField(args.FieldName);

20.

21.            Shapeshape=builder.InsertImage(args.FieldValue.ToString());

22.

23.            //设置x,y坐标和高宽.

24.            shape.Left=0;

25.            shape.Top=0;

26.            shape.Width=60;

27.            shape.Height=80;

28.        }

29.    }

30.}

效果如下:

11.向模版插入Html

这里的家乡简介使用html格式

12.插入html示例

1. stringtempPath=Server.MapPath("~/Docs/Temp/Template.doc");

2.stringdescHtml="";//这里是html文本,由于太长略去

3.vardoc=newDocument(tempPath);//载入模板

4.//提供数据源

5.String[]fieldNames=newString[]{"UserName","Gender","BirthDay","Address","Desc"};

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

7.//增加处理html程序

8.doc.MailMerge.FieldMergingCallback=newHandleMergeFieldInsertHtml();

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

10.doc.MailMerge.Execute(fieldNames,fieldValues);

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

12.vardocStream=newMemoryStream();

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

14.returnbase.File(docStream.ToArray(),"application/msword","Template.doc");

15.//如果不增加html的处理程序,默认以文本的输出,这里我们写一个自定义的处理类

16.classHandleMergeFieldInsertHtml:

IFieldMergingCallback

17.{

18.    //文本处理在这里

19.    voidIFieldMergingCallback.FieldMerging(FieldMergingArgse)

20.    {

21.        if(e.DocumentFieldName.Equals("Desc"))

22.        {

23.            //使用DocumentBuilder处理图片的大小

24.            DocumentBuilderbuilder=newDocumentBuilder(e.Document);

25.            builder.MoveToMergeField(e.FieldName);

26.            builder.InsertHtml(e.FieldValue.ToString());

27.        }

28.    }

29.    //图片处理在这里

30.    voidIFieldMergingCallback.ImageFieldMerging(ImageFieldMergingArgsargs)

31.    {

32.

33.    }

34.}

35.//IFieldMergingCallback在循环结构中同样适用

36.//小结:

利用书签加上标志位,利用自定义的IFieldMergingCallback灵活处理各种需求,后边会继续尝试根据条件加载不同的模版

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1