当前位置 > 首页 > 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");//送检部门负责人    

  • My Silverlight系列(12)—— 发布一个通用控件Menu

    2009-6-25 20:53:00

    小生不才,自接触Silverlight至今已经一年有余,平时用Silverlight开发应用的时候,使用最多的是UserControl,即使用MS或者第三方提供的通用控件或者Custom Contr

  • ??o?o?Lumisoft.NET?????°???é????????é?????è??

    2010-12-21 21:58:00

    ??¨???é?¢???????o?????????-????????????è??DotNet??????SMTP?±????é????????é?????è?????é?????

  • 微软ASP.NET站点部署指南(11):部署SQL Server数据库更新

    2011-12-5 12:37:00

    1. 综述 本章节展示的是如何向完整版SQL Server 数据库部署一个数据库升级。与第9章的数据库升级部署有所不同(第9章是部署到SQL Server Compact数据库)。 提

  • 一个防御SQL注入攻击需要注意的问题

    2009-1-31 20:30:00

    SQL注入算是一个极为普通的问题了,解决方案也多如牛毛,但是新的注入方式仍然层出不穷。 目前很多IIS防火墙其实质就是一个ISAPI Filter,针对SQL注入攻击的防御实质就是关键字过滤,

  • 用 ScribeFire Blog Editor 发布日志和附件到 cnblogs

    2009-6-9 4:59:00

    有时要写点东西,得打开FF,开上N个标签找资料,用现有的一些博客客户端又是独立的窗口,写点东西还要在N个标签窗口中切换来切换去,文章没写好,鼠标已累得半死,所以我寻到了FF的这么一个Add-on:

  • 如何在ASP.NET中生成HTML5离线Web应用

    2011-4-2 18:34:00

    传统的Web应用程序有一个很大的症结是当用户的网络连接不好时,应用会加载失败,为了 解决这一问题,HTML5中引入了Web的离线工作的功能。离线功能使得Web应用程序类似于本机应用程序,当断开网络连

  • 简单ThreadPool实现

    2009-3-27 22:28:00

    摘要: 由于最近需要用多线程处理一些问题,一开始我用了.net默认的ThreadPool,感觉不是很适合。于是我自己实现了一个简单的ThreadPool。 写的比较简单,有兴趣的朋友一起看看,

  • 一个VS小插件

    2009-11-28 20:20:00

    阅读: 221 评论: 0 作者: atyuwen 发表于 2009-11-28 19:01 原文链接 通常,用 V isual Studio IDE 写程序的同学一定都会用到

  • 用C#获取局域网内所有机器

    2009-9-23 16:44:00

    摘要: 介绍之前首先推荐一个程序员专用搜索引擎-http://www.openso.net原理其实很简单,在cmd.exe下面ping一下几台机,然后用arp -a命令查看一下,这种方式比开多线程去

  • Watir 家族

    2007-4-19 14:36:00

    摘要: ● WatiN– Web Application Testing in .Net 不用多说了,Watir 的 .NET 版本,语法和 Watir 很类似,有 .Net 开发经验