下面的代码分析如何通过修改http头文件,产生excel的文件供用户下载,以达到数据导出的功能。
Dim resp As HttpResponse
Dim colCount As Integer = MyDataGrid.Columns.Count - 1
resp = Page.Response
resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312")
'解决中文乱码之关键
resp.ContentType = "Text/csv"
'通过修改文件类型可以让用户下载为csv类型的文件,修改text/**内容
resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName + ".csv")
'必要,做成下载文件
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()我把上面的代码拷贝到我的项目中,发现了两个错误。一是:resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName + ".csv") 语句中的 FileName 未定义,我应该怎么修改? 二是:resp.Write(FormatExportRow(colCount, item, MyDataGrid))中FormatExportRow()未定义,请问FormatExportRow()这个函数有什么作用?如何修改?
Dim resp As HttpResponse
Dim colCount As Integer = MyDataGrid.Columns.Count - 1
resp = Page.Response
resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312")
'解决中文乱码之关键
resp.ContentType = "Text/csv"
'通过修改文件类型可以让用户下载为csv类型的文件,修改text/**内容
resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName + ".csv")
'必要,做成下载文件
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()我把上面的代码拷贝到我的项目中,发现了两个错误。一是:resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName + ".csv") 语句中的 FileName 未定义,我应该怎么修改? 二是:resp.Write(FormatExportRow(colCount, item, MyDataGrid))中FormatExportRow()未定义,请问FormatExportRow()这个函数有什么作用?如何修改?
dim FileName as string = "你要的名称"
FormatExportRow这个函数自己写的,看它的参数,应是根据行数列数从datagrid中取相应的值形成带","号的文本串吧