问题解决了,先将改进代码贴出。(实现将DataGrid中数据倒出Excel文件并下载) - 中国WEB开发者网络 (http://www.webasp.net) -- 技术教程 (http://www.webasp.net/article/) --- 问题解决了,先将改进代码贴出。(实现将DataGrid中数据倒出Excel文件并下载) (http://www.webasp.net/article/5/4047.htm) |
| -- 作者:未知 -- 发布日期: 2003-07-12 |
| Imports System Imports System.Text Namespace toExcel '功能:将asp.net中DataGrid生成Excel文件下载。 'Mountains改进:1、支持中文 2、隐藏列不显示 '日期:2002.10.30 Public Class DataGridToCSV Public Function GenerateFile(ByRef Page As System.Web.UI.Page, ByVal MyDataGrid As System.Web.UI.WebControls.DataGrid, ByVal FileName As String) As String Dim resp As HttpResponse Dim colCount As Integer = MyDataGrid.Columns.Count - 1 resp = Page.Response resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312") '解决中文乱码之关键 'resp.Charset = "utf-8" 'resp.AddFileDependency(FileName) 'resp.ContentType = "Text/HTML" ''resp.AppendHeader("Content-Type", "text/html; charset=gb2312") resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName) '必要,做成下载文件 Dim colHeaders As String = "" Dim strItems As StringBuilder = New StringBuilder() Dim myCol As DataGridColumn Dim i As Integer For i = 0 To colCount myCol = MyDataGrid.Columns(i) If myCol.Visible = True Then colHeaders = colHeaders & myCol.HeaderText.ToString & "," End If Next If colHeaders.Length > 0 Then colHeaders = colHeaders.Substring(0, colHeaders.LastIndexOf(",")) End If colHeaders = colHeaders & Chr(13) & Chr(10) resp.Write(colHeaders) Dim colRow As String Dim item As DataGridItem For Each item In MyDataGrid.Items resp.Write(FormatExportRow(colCount, item, MyDataGrid)) Next item resp.End() End Function Private Function FormatExportRow(ByVal colCount As Integer, ByVal Item As DataGridItem, ByVal MyDataGrid As System.Web.UI.WebControls.DataGrid) As String Dim strItem As String Dim i As Integer For i = 0 To colCount If MyDataGrid.Columns(i).Visible = True Then If Item.Cells(i).Text Is System.DBNull.Value Then Item.Cells(i).Text = "" End If If i = colCount Then strItem += Item.Cells(i).Text.ToString & Chr(13) & Chr(10) Else strItem += Item.Cells(i).Text.ToString & "," End If End If Next strItem = Replace(strItem, " ", " ") Return strItem End Function End Class End Namespace |
| webasp.net |