zoukankan      html  css  js  c++  java
  • 【转】利用Aspose.Word控件和Aspose.Cell控件,实现Word文档和Excel文档的模板化导出

    我们知道,一般都导出的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文档的模板化导出的相关操作过程及代码,希望对大家有帮助,也作为我的一个总结,以后参考,呵呵,欢迎互相沟通研究。

  • 相关阅读:
    【转】CUDA5/CentOS6.4
    【转】centos 6.4 samba 安装配置
    【转】Install MATLAB 2013a on CentOS 6.4 x64 with mode silent
    【转】Getting xrdp to work on CentOS 6.4
    【VLFeat】使用matlab版本计算HOG
    Unofficial Windows Binaries for Python Extension Packages
    March 06th, 2018 Week 10th Tuesday
    March 05th, 2018 Week 10th Monday
    March 04th, 2018 Week 10th Sunday
    March 03rd, 2018 Week 9th Saturday
  • 原文地址:https://www.cnblogs.com/SALIN/p/3128084.html
Copyright © 2011-2022 走看看