博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用Aspose.Word控件和Aspose.Cell控件,实现Word文档和Excel文档的模板化导出
阅读量:5094 次
发布时间:2019-06-13

本文共 3623 字,大约阅读时间需要 12 分钟。

我们知道,一般都导出的Word文档或者Excel文档,基本上分为两类,一类是动态生成全部文档的内容方式,一种是基于固定模板化的内容输出,后者在很多场合用的比较多,这也是企业报表规范化的一个体现。

我的博客介绍过几篇关于Aspose.Word控件和Aspose.Cell控件的使用操作,如下所示。

《》

《》

《》

《》

以及关于Word的操作的《》

这些都是我本人的总结,是实实在在的从项目中来,到博客中去的经验总结,本篇主要介绍在Web的模板化文档输出中,Aspose.Word控件和Aspose.Cell控件的使用操作。

1、Word模板化的文档导出

模板化的输出,首先是在预定义好固定的模板,然后绑定数据源或者替换相关的文字实现模板化文档的导出操作。

在Aspose.Word的操作对象中,我们可以使用文本替换的方式实现模板内容的修改,简单的操作如下所示。

Document doc = new Document(MyDir + "Document.doc");doc.Range.Replace("wuhuacong", "伍华聪", false, true);

也可以以书签引用替换的方式实现,首先要定义好相应的标签引用,操作如下。

在一个Word文档中某固定位置插入一个标签引用,在Word(2007、2010)的【插入】-【书签】中插入指定位置的书签引用,如下所示。

替换标签内容的代码如下所示。

Aspose.Words.Bookmark bookmark = doc.Range.Bookmarks["ACCUSER_SEX"]; if (bookmark != null) {      bookmark.Text = "男"; }

为了较好展示操作效果,我们先来固定一个Word的模板文档,如下所示。

实现模板化的文档导出,我这里结合两种方式实现内容的替换操作,一个是使用文字替换,一个是使用标签引用,两部分的代码如下所示。

protected void btnGenWord_Click(object sender, EventArgs e)        {            Dictionary
dictSource = new Dictionary
(); dictSource.Add("TIS_HANDLE_NO", "T0001"); dictSource.Add("ACCUSE_INDUSTRY", "出租车"); dictSource.Add("ACCUSER_NAME", "张三"); string templateFile = Server.MapPath("./Templates/Advice.doc"); Aspose.Words.Document doc = new Aspose.Words.Document(templateFile); //使用文本方式替换 foreach (string name in dictSource.Keys) { doc.Range.Replace(name, dictSource[name], true, true); } #region 使用书签替换模式 Aspose.Words.Bookmark bookmark = doc.Range.Bookmarks["ACCUSER_SEX"]; if (bookmark != null) { bookmark.Text = "男"; } bookmark = doc.Range.Bookmarks["ACCUSER_TEL"]; if (bookmark != null) { bookmark.Text = "1862029207*"; } #endregion doc.Save(Response, "testAdvice.doc", Aspose.Words.ContentDisposition.Attachment, Aspose.Words.Saving.SaveOptions.CreateSaveOptions(Aspose.Words.SaveFormat.Doc)); }

基于Asp.NET的界面如下所示。

生成的模板化文档如下所示,整个文档是基于固定模板输出,因此比较标准和统一化。

2、Aspose.Cell模板化的文档导出

Aspose.Cell的模板化文档也是类似,也有两种方式可以操作,一种是替换文本,一种是绑定数据源的方式实现,具体可以参考一下我前面的列出随笔,对于Apsose.Cell来说,绑定数据源的功能非常强大。

绑定数据源是通过在模板中设置变量对象方式,变量对象是通过&=来引用,对象的属性或者列名,通过如&=Customer.City方式引用,非常直观方便。

这种方式的变量对象支持简单对象,如下所示。

 

也支持复杂的集合对象,如下所示。

为了演示模板化的文档导出,我这里设计了一个固定的Excel模板,通过两种方式实现数据的替换,先定义Excel模板如下所示。

后台绑定数据的代码如下所示。

protected void btnGenExcel_Click(object sender, EventArgs e)        {            Dictionary
dictSource = new Dictionary
(); dictSource.Add("TIS_HANDLE_NO", "T0001"); dictSource.Add("ACCUSE_INDUSTRY", "出租车"); dictSource.Add("ACCUSER_NAME", "张三"); string templateFile = Server.MapPath("./Templates/Advice.xls"); WorkbookDesigner designer = new WorkbookDesigner(); designer.Open(templateFile); Aspose.Cells.Worksheet worksheet = designer.Workbook.Worksheets[0]; //使用文本替换 foreach (string name in dictSource.Keys) { worksheet.Replace(name, dictSource[name]); } //使用绑定数据方式替换 designer.SetDataSource("ACCUSER_SEX", "男"); designer.SetDataSource("ACCUSER_TEL", "1862029207*"); designer.Process(); designer.Save("testAdvice.xls", SaveType.OpenInExcel, FileFormatType.Excel2003, Response); }

 

以上就是使用Aspose.Word控件和Aspose.Cell控件,实现Word文档和Excel文档的模板化导出的相关操作过程及代码,希望对大家有帮助,也作为我的一个总结,以后参考,呵呵,欢迎互相沟通研究。

转载于:https://www.cnblogs.com/BrokenIce/p/5994973.html

你可能感兴趣的文章
python 笔记数据类型
查看>>
如何用php开启企业微信开发的回调模式
查看>>
UAC在注册表中的对应位置
查看>>
机器为什么可以学习(2)---一般化理论
查看>>
集合和Iterator迭代器
查看>>
IO—》File类
查看>>
第四次作业(胡明浩)
查看>>
HDU 2815 扩展baby step giant step 算法
查看>>
HTML5+CSS3设计界面
查看>>
mybatis--面向接口编程
查看>>
yii第三方插件snoopy配置
查看>>
分立元件封装尺寸及PCB板材工艺与设计实例
查看>>
Web前端学习笔记(三)——input标签的属性
查看>>
BZOJ.3262.陌上花开([模板]CDQ分治 三维偏序)
查看>>
BZOJ.1312.[Neerc2006]Hard Life(分数规划 最大权闭合子图)
查看>>
js的concat函数、join 、slice函数及二维数组的定义方式
查看>>
Vue的单页应用中如何引用单独的样式文件
查看>>
html5利用getObjectURL获取图片路径上传图片
查看>>
学习资料
查看>>
.net中序列化读写xml方法的总结
查看>>