您的位置:首页 > 编程语言 > ASP

ASP.NET中GridView数据导出EXCEL小结

2010-12-11 15:36 686 查看
本周按业务部门的要求,做一个客户拜访登记管理的小程序(B/S模式),在这里面用到了GridView来显示根据条件查询到的数据,但业务部门同时要求数据要导出为EXCEL方面使用,在网上查找了很多资料,汇总并根据自己的实际情况编写使用,效果不错,现记下以备忘并与大家分享。(开发环境:Windows 2003/VS 2005/SQL SERVER 2005)

导出为EXCEL的代码网上有很多,分析后选择了最简单的直接用流方法导出,文件类型为XLS文件,但实际上是一个文本文件(HTML格式),这样的优点是1、服务器本身不需要安装OFFICE组件,有很好的通用性;2、导出文件为直接生成直接下载,不需要预先保存在服务器上,对空间大小没有需求;3、控制简单,代码容易理解。缺点是有一些EXCEL特有的功能可能无法实现吧。

先将代码贴出,再一步步的讲一下当时遇到的问题和处理方法吧:

style方式

'下面的代码是在导出事件中的
GV_list.RenderControl(htw)
'将css代码加在此处
response.Write("<style> .text { vnd.ms-excel.numberformat:@; } .cndate {vnd.ms-excel.numberformat:yyyy年m月d日} </style>")
Response.Write(strWriter.ToString)

'下面是一个单独的过程
Protected Sub GV_list_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GV_list.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
e.Row.Cells(0).Attributes.Add("class", "text")
e.Row.Cells(4).Attributes.Add("class", "text")
e.Row.Cells(5).Attributes.Add("class", "text")
e.Row.Cells(6).Attributes.Add("class", "cndate")
End If
End Sub


边学边做,花了半天的时间,将整个GridView导出数据到EXCEL的功能了解了一个大概,现汇总一下和大家一起分享,因为这次的数据基本可以肯定没有超过六万条的可能,就没有考虑OFFICE2003无法打开的情况,而且如果数据超过了最大允许条数,因为生成并下载的实际上文本格式,也可以直接使用OFFICE2007来打开操作,关于多个工作表导出及导出为“真正”的EXCEL文件的,下一步慢慢来处理吧,呵呵。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: