最近,新的Windows更新破坏了将GridView转储到Excel文件以从Internet下载/打开的方法.
我的代码使用StringWriter,HTMLTextWriter和RenderControl从GridView转储到XLS文件.使用http://www.aspsnippets.com/Articles/Export-GridView-to-Excel-in-ASPNet-with-Formatting-using-C-and-VBNet.aspx中的以下代码的常用方法
Protected Sub ExportToExcel(sender As Object,e As EventArgs) Response.Clear() Response.Buffer = True Response.AddHeader("content-disposition","attachment;filename=GridViewExport.xls") Response.Charset = "" Response.ContentType = "application/vnd.ms-excel" Using sw As New StringWriter() Dim hw As New HtmlTextWriter(sw) 'To Export all pages GridView1.AllowPaging = False Me.BindGrid() GridView1.HeaderRow.BackColor = Color.White For Each cell As TableCell In GridView1.HeaderRow.Cells cell.BackColor = GridView1.HeaderStyle.BackColor Next For Each row As GridViewRow In GridView1.Rows row.BackColor = Color.White For Each cell As TableCell In row.Cells If row.RowIndex Mod 2 = 0 Then cell.BackColor = GridView1.AlternatingRowStyle.BackColor Else cell.BackColor = GridView1.RowStyle.BackColor End If cell.CssClass = "textmode" Next Next GridView1.RenderControl(hw) 'style to format numbers to string Dim style As String = "<style> .textmode { } </style>" Response.Write(style) Response.Output.Write(sw.ToString()) Response.Flush() Response.[End]() End Using End Sub Public Overrides Sub VerifyRenderingInServerForm(control As Control) ' Verifies that the control is rendered End Sub