Go homepage(回首页) Upload pictures (上传图片) Write articles (发文字帖)
The author:(作者)归海一刀published in(发表于) 2014/1/30 1:10:24 扩展,GridView,控件,-,支持,Excel,及,Word,汇出_[Asp.Net教程]
摘要GridView 汇出 Excel 及 Word 文件是蛮常使用的需求,此篇文章将扩展 GridView 控件提供汇出 Excel 及 Word 文件的方法。一般在 GridView 汇出的常见下列问题也会在此一并被解决。GridView 汇出的常见问题:问题1. GridView 使用 RenderControl 方法产生的错误。问题2. GridView 分页的问题。问题3. 汇出文件名称产生乱码的问题。问题4. 汇出内容产生乱码的问题。
解决 GridView 汇出问题我们先针对 GridView 汇出的问题,逐一处理解决
问题1. GridView 使用 RenderControl 方法产生的错误。此问题参考上篇「使用 BasePage 来解决 GridView 执行 RenderControl 产生的错误」来解决。 问题2. GridView 分页的问题。在执行汇出时,若 GridView 有使用分页(AllowPaging=True),则采下列步骤处理。Step1.取消分页,即设定 GridView.AllowPaging=False。Step2.GridView 执行 DataBind,使其重新系结所有数据,再使用 RenderCotnrol 输出 HTML 程序代码。Step3.还原分页,即设定 GridView.AllowPaging=True。
问题3. 汇出文件名称产生乱码的问题。针对此问题,只需将文件名称经 UrlEncode 编码,即可解决中文文件名的问题。HttpUtility.UrlEncode(FileName, Encoding) 问题4. 汇出内容产生乱码的问题。使用 Response 输出 来解决内容乱码的问。 扩展 GridView 控件我们继承 GridView 命名为 TBGridView,其中新增 Export、ExportExcel、ExportWord 等汇出方法。
1Imports System 2Imports System.Collections.Generic 3Imports System.ComponentModel 4Imports System.Text 5Imports System.Web 6Imports System.Web.UI 7Imports System.Web.UI.WebControls 8Imports System.Drawing 910Namespace WebControlsNamespace WebControls11 < _12 Description("TBGridView 控件"), _13 ToolboxData("<{0}:TBGridView runat=server>{0}:TBGridView>") _14 > _15 Public Class TBGridViewClass TBGridView16 Inherits GridView1718 /**/''' 19 ''' GridView 控件汇出 Excel 文件。20 ''' 21 Public Sub ExportExcel()Sub ExportExcel()22 Export(Encoding.UTF8, "gridview.xls", "application/ms-excel")23 End Sub2425 /**/''' 26 ''' GridView 控件汇出 Word 文件。27 ''' 28 Public Sub ExportWord()Sub ExportWord()29 Export(Encoding.UTF8, "gridview.doc", "application/ms-word")30 End Sub3132 /**/''' 33 ''' GridView 控件汇出。34 ''' 35 ''' 编码方式。36 ''' 文件名称。37 ''' 内容类型标头。 38 Public Sub Export()Sub Export(ByVal Encoding As Encoding, ByVal FileName As String, ByVal ContentType As String)39 Dim oResponse As HttpResponse40 Dim oStringWriter As System.IO.StringWriter41 Dim oHtmlWriter As System.Web.UI.HtmlTextWriter42 Dim bAllowPaging As Boolean43 Dim sText As String44 Dim sFileName As String4546 If TypeOf Me.Page Is TBBasePage Then47 DirectCast(Me.Page, TBBasePage).IsVerifyRender = False '页面不需验证控件48 End If4950 '文件名称需经 UrlEncode 编码,解决中文文件名的问题51 sFileName = HttpUtility.UrlEncode(FileName, Encoding)5253 oResponse = HttpContext.Current.Response54 oResponse.Clear()55 sText = ""56 sText = String.Format(sText, Encoding.WebName)57 oResponse.Write(sText)58 oResponse.AddHeader("content-disposition", "attachment;filename=" & sFileName)59 oResponse.ContentEncoding = Encoding60 oResponse.Charset = Encoding.WebName61 oResponse.ContentType = "application/ms-excel"6263 ' If you want the option to open the Excel file without saving than64 ' comment out the line below65 ' oResponse.Cache.SetCacheability(HttpCacheability.NoCache)6667 oStringWriter = New System.IO.StringWriter()68 oHtmlWriter = New System.Web.UI.HtmlTextWriter(oStringWriter)69 bAllowPaging = Me.AllowPaging70 If bAllowPaging Then71 Me.AllowPaging = False72 If Me.RequiresDataBinding Then73 Me.DataBind()74 End If75 End If7677 Me.RenderControl(oHtmlWriter)7879 If bAllowPaging Then80 AllowPaging = bAllowPaging81 End If82 oResponse.Write(oStringWriter.ToString())83 oResponse.End()84 End Sub8586 End Class87End Namespace测试程序在页面放置一个 GridView 控件系结数据并设定分页,另外放置二个按钮分别做「汇出 Excel 文件」及「汇出 Word 文件」的动作。
汇出按钮撰写的程序代码如下
1 Protected Sub btnExcportExcel_Click()Sub btnExcportExcel_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnExcportExcel.Click2 GridView1.ExportExcel()3 End Sub45 Protected Sub btnExportWord_Click()Sub btnExportWord_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnExportWord.Click6 GridView1.ExportWord()7 End Sub汇出 Excel 文件的结果如下所示
汇出 Word 文件的结果如下所示
来源:http://www.cnblogs.com/jeff377
赞