我们知道,一般都导出的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. Django CRM __contains与__icontains区别

    http://www.yihaomen.com/article/python/199.htm operators = { 'exact': '= %s', 'iexact': 'LIKE %s', ' ...

  2. 19. javacript高级程序设计-E4X

    1. E4X E4X是对ECMAScript的一个扩展, l 与DOM不同,E4X只用一个类型节点来表示XML中的各个节点 l XML对象中封装了对所有节点都有用的数据和行为.为了表示多个节点的集合, ...

  3. Tesseract-OCR 3.05 躲过语言文字识别(运行程序+中英日韩语言包)

    最新版本 静态编译 tesseract 3.05.00dev leptonica-1.73 libgif 5.1.3 : libjpeg 8c : libpng 1.6.16 : libtiff 3. ...

  4. metro中stream转IRandomAccessStream

    下面的例子是从zip压缩文件解压出jpg文件流,再显示出来. StorageFile zip = await KnownFolders.PicturesLibrary.GetFileAsync(&qu ...

  5. diff & pattch 命令

    基础知识 该命令的功能为逐行比较两个文本文件,列出其不同之处.它比comm命令完成更复杂的检查.它对给出的文件进行系统的检查,并显示出两个文件中所有不同的行,不要求事先对文件进行排序. 语法:diff ...

  6. mysql中Access denied for user 'root'@'localhost' (using password:YES)

    关于昨天下午说的MySQL服务无法启动的问题,解决之后没有进入数据库,就直接关闭了电脑. 今早打开电脑,开始-运行 输入“mysql -uroot -pmyadmin”后出现以下错误: “Access ...

  7. 【leetcode】Edit Distance (hard)

    Given two words word1 and word2, find the minimum number of steps required to convert word1 to word2 ...

  8. 最喜欢的VS 键盘快捷键摘抄

    最喜欢的Visual Studio键盘快捷键(关闭)   336年最喜欢的 425年 你最喜欢的Visual Studio键盘快捷键是什么? 我总是让我的手在键盘上,远离鼠标! 一个请每回答. net ...

  9. VS2013调试时,IIS Express Worker Process 已停止工作

    之前调试都没有报错的,今天突然报错了,然后网上找了下资料,很快解决了问题 这是我报错的提示 解决办法: 用管理员身份运行CMD,输入netsh winsock reset并回车(注意,必须是已管理员身 ...

  10. C#实现把指定文件夹下的所有文件复制到指定路径下以及修改指定文件的后缀名

    1.实现把指定文件夹下的所有文件复制到指定路径下 public static void copyFiles(string path) { DirectoryInfo dir = new Directo ...