好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

利用Aspose.Word控件和Aspose.Cell控件,实现Word文档和Excel文档的模板化

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

主要研究技术:代码生成工具、Visio二次开发、送水管理软件等共享软件开发
专注于 Winform开发框架 、WCF开发框架的研究及应用。
  转载请注明出处:
撰写人:伍华聪   http://www.iqidi.com  
    

 

 

标签:  开发辅助

作者: Leo_wl

    

出处: http://www.cnblogs.com/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于利用Aspose.Word控件和Aspose.Cell控件,实现Word文档和Excel文档的模板化的详细内容...

  阅读:46次