当前位置 > 首页 > Asp.net

Asp.net开发经验-利用Aspose.Words按模板导出Word

7/21/2012 7:05:00 PM来源:Asp.net

    估计很多开发人员都为导出Excel或者Word烦扰吧..网上有各种各样的导出方法...经常用到的方法就是画网页..例如下面的GridView导出excel的代码..这段代码虽然有效..但是其实非常不好用..不仅不能改变Excel单元的大小..而且还有乱七八糟的排版问题..这篇文章说得是导出Word的..扯到Excel有点远了,但是主要说明的是导出方法千奇百怪..大家要选择一种好的有效的..不要盲目的做..到时候觉得不行的时候又要改。今天我和大家说得是Aspose组件,不仅可以导出Excel还能导出Word和其他不同格式的...好了进入正题.

System.Web.HttpContext.Current.Response.Clear();System.Web.HttpContext.Current.Response.Buffer = true;System.Web.HttpContext.Current.Response.Write("<html xmlns:x=\"urn:schemas-microsoft-com:office:excel\">");System.Web.HttpContext.Current.Response.Write("<head>");System.Web.HttpContext.Current.Response.Write("<meta http-equiv=Content-Type content=text/html;charset=gb2312>");//解决中文乱码问题,导出数据在20行内容易出现乱码System.Web.HttpContext.Current.Response.Write("<!--[if gte mso 9]><xml>");System.Web.HttpContext.Current.Response.Write("<x:ExcelWorkbook>");System.Web.HttpContext.Current.Response.Write("<x:ExcelWorksheets>");System.Web.HttpContext.Current.Response.Write("<x:ExcelWorksheet>");System.Web.HttpContext.Current.Response.Write("<x:Name>sheet1</x:Name>");System.Web.HttpContext.Current.Response.Write("<x:WorksheetOptions>");System.Web.HttpContext.Current.Response.Write("<x:Print>");System.Web.HttpContext.Current.Response.Write("<x:ValidPrinterInfo/>");System.Web.HttpContext.Current.Response.Write("</x:Print>");System.Web.HttpContext.Current.Response.Write("</x:WorksheetOptions>");System.Web.HttpContext.Current.Response.Write("</x:ExcelWorksheet>");System.Web.HttpContext.Current.Response.Write("</x:ExcelWorksheets>");System.Web.HttpContext.Current.Response.Write("</x:ExcelWorkbook>");System.Web.HttpContext.Current.Response.Write("</xml>");System.Web.HttpContext.Current.Response.Write("<![endif]--> ");

 

 我们要导出如下图样式的Word

首先我们来画模板..其实很简单的...模板就是下面这幅图.我来简单的介绍一下 <TableStart:All> 是表示从名为All的 DataTable 里面获取数据 <TableEnd:All>就是结束的位置,中间的<jylx>  <my> 之类的都是名为All这个的DataTable的列名.中间还有另外一个<TableStart:Item> <TableStart:Item> 同理这个是名为Item的DataTable 他们中间的<mc> <sl>就是Item这个表的列名。

上面介绍了怎么画模板,我突然忘了告诉大家如何插入那些标签了...其实很简单只要在Word里面插入域即可..如下图所示.

下面我来说说代码应该如何写,首先构造一个DataSet包含两个DataTable一个叫All 一个叫Item..添加代码大致如下,之后就是填充这2个DataTable即可

     private DataSet GetOneDs()        {            DataTable dt1 = new DataTable("All");            dt1.Columns.Add("jylx");                dt1.Columns.Add("my");            dt1.Columns.Add("mc");//            dt1.Columns.Add("mz");//            dt1.Columns.Add("mjz");//            //dt1.Columns.Add("mqt");//其他            dt1.Columns.Add("sjbm");//            dt1.Columns.Add("yqwcrq");//要求完成日期            dt1.Columns.Add("jyyj");//检验依据            dt1.Columns.Add("szq");//自取            dt1.Columns.Add("sdzwd");//电子文档            dt1.Columns.Add("sqt");//其它            dt1.Columns.Add("ztwz");//完整            dt1.Columns.Add("ztqx");//缺陷            dt1.Columns.Add("ztms");//描述            dt1.Columns.Add("sjbmfzr");//送检部门负责人    

  • delphi中Access相对路径问题

    5/23/2009 1:37:00 AM

    用delphi做一个数据库(Access)应用程序,我把access文件 ccdata.mdb放在本目录的data文件夹下 ,然后用新建一个DataModule,里面放一个ADOConnecti

  • 【经验总结】.Net的并发连接数限制问题

    12/19/2009 1:47:00 AM

    阅读: 388 评论: 8 作者: GUO Xingwang 发表于 2009-12-18 22:03 原文链接    最近在项目中遇到了很棘手的问题,查到最后发现是由于HttpWebRe

  • 体验ADO.NET Entity Framework的继承

    9/4/2009 1:48:00 PM

    摘要: ADO.NET Entity Framework(以下简称ADO.NET EF)有一个非常可信的运行时。之所以不敢在项目中广泛使用是因为其糟糕的设计时。这个DSL设计时糟糕在哪里呢?其一,只

  • 关于呼叫中心业务系统构架方面的设想

    4/14/2009 2:59:00 PM

    摘要: 前言: 目前,公司的呼叫中心程序已经在中国的很多城市运行着。由于受到技术和网络环境的限制,这些呼叫中心程序安装实施完毕后,我们都是采取客户先反映问题,然后我们再安排人员时间进行维护。这种被动

  • .Net 4.0 Parallel 编程(六)Task(下)

    3/27/2011 2:52:00 PM

    在之前的文章中已经介绍过了Task的基本使用了,以及如何取消任务、任务继续等功能。本篇Post主要就Task的异常处理以及Wait功能进行些介绍。 等待时间执行 在TPL中我们可以通过三种方

  • Separate gridview column alignment with CSS Friendly Control Adapter

    4/9/2009 1:47:00 AM

    When using the CSS Friendly Control Adapters, you get an easy to modify the look and feel of all yo

  • DataTable vs. BindingList<T>

    4/5/2007 1:31:00 PM

    We were having a discusion today about the merits of using DataTables vs. BindingList<T> (a g

  • 关于程序开发工作中,开发环境和生产环境布署的解决办法

    11/18/2009 9:11:00 PM

    阅读: 466 评论: 8 作者: Lixy 发表于 2009-11-18 17:13 原文链接 首先,之所以把这个问题发到首页,一是我身边的朋友都有类似的问题,并且目前都没有最好的解决方

  • Workflow WF Reference Links for 2009-02-06

    2/6/2009 5:48:00 PM

    摘要: Workflow Reference Links:1. 到底谁需要BPEL? 文章中,作者Keith对当今BPM产品中的BPEL使用情况进行了评估,并建议用可以直接执行的、基于BPMN的流程

  • 在.net 当中如何XML序列化一个Collection

    3/8/2010 1:11:00 PM

    阅读: 1089 评论: 3 作者: m2land 发表于 2010-03-07 17:39 原文链接 Collection主要是指像Array, ArrayList, List, Dic