当前位置 > 首页 > Asp.net

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

2012-7-21 19:05:00来源: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");//送检部门负责人    

  • 安装部署.NET桌面应用程序可以不安装.net framework 3.5吗?或者是可以让安装.net framework 3.5快点。有方案吗?谢谢

    2011-9-13 10:58:00

    安装部署.NET桌面应用程序可以不安装.net framework 3.5吗?或者是可以让安装.net framework 3.5快点。有方案吗?谢谢 微软没有什么更好地解决方案吗?这个.net f

  • 手工解析.NET完全限定类型名称

    2009-8-27 14:47:00

    摘要: 大家都经常使用.NET反射,用内置的反射API就可以进行灵活而强大的操作。然而,有的时候我们需要某些反射的操作,但是却有不能加载包含所需类型的程序集。例如,我们要操作的类型是.NET Com

  • 让代码看起来更舒服(1):选择适合的配色方案

    2009-11-20 9:56:00

    阅读: 857 评论: 17 作者: Windie Chai 发表于 2009-11-20 08:28 原文链接 “让代码看起来更舒服”,看到这个标题,也许你会条件

  • 使Spring.NET的IOC容器支持动态加载的程序集

    2010-10-3 16:58:00

    作者: 明年我18 发表于 2010-10-03 15:57 原文链接 阅读: 41 评论: 0 当我们发布系统时,有时候希望不用关掉应用程序就能完成发布,但Spring.NET的App

  • 我写的过桥算法

    2009-7-22 20:54:00

    问题源自莫贝特的 博客 ,大意是N个人在夜间过桥,每个人各自的速度都不一样,现只有一个火把,且过桥必须手持火把,每次最多只能有两人同时过桥,且所需时间以两人中较长的一人计算,问N个人过桥最短所需多少

  • Google map api 标注 图层管理(原创)

    2009-5-23 13:51:00

    google map api 标注是单个的增加到地图中,当地图中的标注很多并且多种数据类型时,就难以管理这些标注。api中没有对标注图层的相关定义,只有全局的叠加层的概念。如下: en

  • 表单(checkbox)批量修改

    2009-12-31 1:32:00

    阅读: 21 评论: 1 作者: 祯の少 发表于 2009-12-31 00:41 原文链接 最近学了MVC设计模式,在客户端方面也接触了一些东西,今天巧合发现checkbox有这样的功能

  • WCF安全之EndPointIdentity

    2009-7-1 20:29:00

    最近在做一个项目,应用了WCF进行分布式开发,中间还涉及到消息路由器等,好在有WCF提供了强大的基础支持,当然,本身也作了不少的扩展,实际,我 最关心的是WCF的安全问题,网上不少朋友介绍的WCF的

  • 上周热点回顾(12.14-12.20)

    2009-12-21 11:19:00

    阅读: 429 评论: 2 作者: 博客园团队 发表于 2009-12-21 10:05 原文链接 热点随笔: · 开发人员最喜爱的十大免费的Vi

  • (原創) 如何讓泛型支援多個interface? (C#) (ISO C++) (C++/CLI) (.NET)

    2007-6-16 20:44:00

    摘要: Abstract在 (C++) (Template C++) (C#) href=http://www.cnblogs.com/oomusou/archive/2007/06/16/777