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

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

使用Aspose.Cell控件实现Excel高难度报表的生成(一)

使用Aspose.Cell控件实现Excel高难度报表的生成(二)

使用Aspose.Cell控件实现Excel高难度报表的生成(三)

使用Aspose.Cell控件实现多个Excel文件的合并

以及关于Word的操作的《利用Aspose.Word控件实现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<string, string> dictSource = new Dictionary<string, string>();
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<string, string> dictSource = new Dictionary<string, string>();
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文档的模板化导出的相关操作过程及代码,希望对大家有帮助,也作为我的一个总结,以后参考,呵呵,欢迎互相沟通研究。

原文地址:http://www.cnblogs.com/wuhuacong/archive/2013/02/05/2893191.html

利用Aspose.Word控件和Aspose.Cell控件,实现Word文档和Excel文档的模板化导出的更多相关文章

  1. JSP生成WORD文档,EXCEL文档及PDF文档的方法

    转自:https://www.jb51.net/article/73528.htm 本文实例讲述了JSP生成WORD文档,EXCEL文档及PDF文档的方法.分享给大家供大家参考,具体如下: 在web- ...

  2. 利用Aspose.Cell控件导入Excel非强类型的数据

    导入Excel的操作是非常常见的操作,可以使用Aspose.Cell.APOI.MyXls.OLEDB.Excel VBA等操作Excel文件,从而实现数据的导入,在导入数据的时候,如果是强类型的数据 ...

  3. 使用Aspose.Cell控件实现Excel高难度报表的生成(三)

    在之前几篇文章中,介绍了关于Apsose.cell这个强大的Excel操作控件的使用,相关文章如下: 使用Aspose.Cell控件实现Excel高难度报表的生成(一) 使用Aspose.Cell控件 ...

  4. 使用Aspose.Cell控件实现Excel高难度报表的生成(一)

    时光飞逝,生活.工作.业余研究总是在不停忙碌着,转眼快到月底,该月的博客文章任务未完,停顿回忆一下,总结一些经验以及好的东西出来,大家一起分享一下.本文章主要介绍报表的生成,基于Aspose.Cell ...

  5. 使用Aspose.Cell控件实现Excel高难度报表的生成(二)

    继续在上篇<使用Aspose.Cell控件实现Excel高难度报表的生成(一)>随笔基础上,研究探讨基于模板的Aspose.cell报表实现,其中提到了下面两种报表的界面,如下所示: 或者 ...

  6. (转)使用Aspose.Cell控件实现Excel高难度报表的生成(一)

    本文章主要介绍报表的生成,基于Aspose.Cell控件的报表生成.谈到报表,估计大家都有所领悟以及个人的理解,总的来说,一般的报表生成,基本上是基于以下几种方式:一种是基于微软Excel内置的引擎来 ...

  7. 使用Aspose.Cell控件实现Excel高难度报表的生成

    1.使用Aspose.Cell控件实现Excel高难度报表的生成(一) http://www.cnblogs.com/wuhuacong/archive/2011/02/23/1962147.html ...

  8. 使用Aspose.Cell控件实现多个Excel文件的合并

    之前有写过多篇关于使用Apose.Cell控件制作自定义模板报表和通用的导出Excel表格数据的操作,对这个控件的功能还是比较满意,而且也比较便利.忽然有一天,一个朋友说:你已经有生成基于自定义模板报 ...

  9. Csharp: Create Excel Workbook or word from a Template File using aspose.Word 14.5 and aspose.Cell 8.1

    winform: /// <summary> /// /// </summary> /// <param name="sender"></ ...

随机推荐

  1. 使用SharePoint 2010 母版页

    SharePoint 2010母版页所用的还是ASP.NET 2.0中的技术.通过该功能,实现了页面框架布局与实际内容的分离.虽然在本质上自定义母版页的过程和以前版本的SharePoint大致相同,但 ...

  2. Java RuntimeException异常处理汇总

    Java中所有异常的父类是Throwable类,在Throwable类下有两大子类: 一个是Error类,指系统错误异常,例如:VirtualMachineError 虚拟机错误,ThreadDeat ...

  3. ios cordite 读取错误CoreData could not fulfill a fault for '0x15b4a870

    解释在这里 http://stackoverflow.com/questions/14296892/nsobjectinaccessibleexception-reason-coredata-coul ...

  4. 9.SpringMVC和json结合传递数据 && 10.SpringMVC获取controller中json的数据

  5. 【Android】如何将eclipse工程导入studio

    1.eclipse工程右键->export->Generate Gradle build files 2.studio->New->import project->选择工 ...

  6. How can I fix “Compilation unit name must end with .java, or one of the registered Java-like extensions”?

    How can I fix “Compilation unit name must end with .java, or one of the registered Java-like extensi ...

  7. 【Python升级录】--基础知识

    创建角色成功! 正在载入python........ [python介绍] python是一门动态解释性的强类型定义语言. python的创始人为吉多·范罗苏姆(Guido van Rossum).1 ...

  8. SQL语句题库

    一.    填空题 Not Only SQL数据库 泛指  非关系型数据库  . SYS和SYSTEM用户都是Oracle 的系统用户,它们都使用SYSTEM表空间,其中 sys 拥有更大的权限. O ...

  9. osgconv 将多个模型合成一个模型

    osgconv a.osg b.osg c.osg BigOne.ive 以上命令的作用是将a.osg.b.osg.c.osg三个模型合并到BigOne.ive模型

  10. ios 上下拉刷新

    UITableView:下拉刷新和上拉加载更多 - cDigger 时间 2013-11-24 02:00:00  博客园精华区 原文  http://www.cnblogs.com/lexingyu ...