我们想要从数据创建一个CSV文件。它显示的是HTML标签。对于xlx文件,这个工作正常。 下面是代码。
Dim response As System.Web.HttpResponse = System.Web.HttpContext.Current.Response
response.Clear()
response.ClearHeaders()
response.Write("<meta http-equiv=""Content-Type"" content=""text/html; charset=UTF-8""/>")
'Chose what type of file needed ie.e CSV /XLS
If _exportType = ExportTypeEnum.CSV Then
response.ContentType = "application/vnd.xls"
Else
response.ContentType = "application/vnd.xls"
End If
response.AddHeader("Content-Disposition", "attachment;filename=" & FileNameToExport)
Dim sw As System.IO.StringWriter = New StringWriter()
Dim htw As HtmlTextWriter = New HtmlTextWriter(sw)
Dim dg As DataGrid = New DataGrid()
Dim dv1 As DataView = data
dg.DataSource = dv1
dg.BorderStyle = BorderStyle.None
dg.DataBind()
dg.RenderControl(htw)
response.Write(sw.ToString())
response.End()
请建议为什么它不能用于CSV文件,尽管它适用于xls文件。
非常感谢提前
答案 0 :(得分:1)
您明确地以HTML格式编写输出。注意这一行:
response.Write("<meta http-equiv=""Content-Type"" content=""text/html; charset=UTF-8""/>")
注意你用来写输出的对象:
Dim htw As HtmlTextWriter = New HtmlTextWriter(sw)
这是向输出发送HTML的全部内容。它对于Excel文件“工作正常”,因为Excel在呈现文件时理解HTML结构。但是,CSV是一种非常“平坦”的格式,只能识别纯文本(用逗号分隔)。例如,如果您使用此代码写入.txt
文件,您还会看到HTML标记。
如果您想要一个没有HTML的CSV文件,则不应该向其中编写HTML内容。