Aspose Word模板使用总结Word下载.docx
- 文档编号:16740042
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:10
- 大小:201.68KB
Aspose Word模板使用总结Word下载.docx
《Aspose Word模板使用总结Word下载.docx》由会员分享,可在线阅读,更多相关《Aspose Word模板使用总结Word下载.docx(10页珍藏版)》请在冰豆网上搜索。
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(),"
"
Template.doc"
3.创建循环数据的模版,这里的循环数据类似页面的for结构,不拘泥于形式table
«
TableStart:
UserList»
姓名:
UserName»
TableEnd:
4.使用DataTable提供数据源
1.//创建名称为UserList的DataTable
2.DataTabletable=newDataTable("
UserList"
3.table.Columns.Add("
4.table.Columns.Add("
5.table.Columns.Add("
6.table.Columns.Add("
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(),"
5.绑定带有子循环数据模版
6.使用DataSet提供数据源
1.//用户表结构
2.DataTabletable=newDataTable("
3.table.Columns.Add(newDataColumn("
Id"
typeof(int)));
7.table.Columns.Add("
8.//分数表结构
9.DataTabletable=newDataTable("
ScoreList"
10.table.Columns.Add(newDataColumn("
UserId"
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["
],?
userScoreTable.Columns["
]));
23.//合并模版,相当于页面的渲染
24.doc.MailMerge.ExecuteWithRegions(dataSet);
25.vardocStream=newMemoryStream();
26.doc.Save(docStream,SaveOptions.CreateSaveOptions(SaveFormat.Doc));
27.returnbase.File(docStream.ToArray(),"
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("
12.//在PositionFlag书签对应的位置,插入另一个文档的内容。
13.//InsertDocument方法可以在
14.InsertDocument(bookmark.BookmarkStart.ParentNode,doc1);
9.创建word模版,使用MergeFeild插入图片
10.插入图片示例
2.stringlogoPath=Server.MapPath("
~/Content/logo.jpg"
3.vardoc=newDocument(tempPath);
//载入模板
4.//提供数据源
5.String[]fieldNames=newString[]{"
logo"
Logo"
};
6.Object[]fieldValues=newObject[]{"
logoPath};
7.//增加处理图片大小程序
8.//doc.MailMerge.FieldMergingCallback=newHandleMergeFieldInsertDocument();
9.//合并模版,相当于页面的渲染
10.doc.MailMerge.Execute(fieldNames,fieldValues);
11.
12.//在MVC中采用,保存文档到流中,使用base.File输出该文件
15.returnbase.File(docStream.ToArray(),"
效果如下:
增加图片大小处理的程序
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("
))
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("
2.stringdescHtml="
//这里是html文本,由于太长略去
Desc"
descHtml};
7.//增加处理html程序
8.doc.MailMerge.FieldMergingCallback=newHandleMergeFieldInsertHtml();
11.//在MVC中采用,保存文档到流中,使用base.File输出该文件
12.vardocStream=newMemoryStream();
13.doc.Save(docStream,SaveOptions.CreateSaveOptions(SaveFormat.Doc));
14.returnbase.File(docStream.ToArray(),"
15.//如果不增加html的处理程序,默认以文本的输出,这里我们写一个自定义的处理类
16.classHandleMergeFieldInsertHtml:
17.{
//文本处理在这里
20.
if(e.DocumentFieldName.Equals("
22.
DocumentBuilderbuilder=newDocumentBuilder(e.Document);
builder.MoveToMergeField(e.FieldName);
builder.InsertHtml(e.FieldValue.ToString());
30.
31.
32.
33.
34.}
35.//IFieldMergingCallback在循环结构中同样适用
36.//小结:
利用书签加上标志位,利用自定义的IFieldMergingCallback灵活处理各种需求,后边会继续尝试根据条件加载不同的模版
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Aspose Word模板使用总结 Word 模板 使用 总结