Aspose Word模板使用总结.docx
- 文档编号:3833793
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:10
- 大小:201.68KB
Aspose Word模板使用总结.docx
《Aspose Word模板使用总结.docx》由会员分享,可在线阅读,更多相关《Aspose Word模板使用总结.docx(10页珍藏版)》请在冰豆网上搜索。
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灵活处理各种需求,后边会继续尝试根据条件加载不同的模版
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Aspose Word模板使用总结 Word 模板 使用 总结