HTML代码显示在CSV文件中

时间:2013-09-26 13:43:43

标签: asp.net vb.net excel csv

我们想要从数据创建一个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文件。

非常感谢提前

1 个答案:

答案 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内容。