0

We want to create a CSV file from data .It is showing HTML tags .Same working fine for xlx file. Below is code.

     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()

Please suggest WHY it is not working for CSV file , although it is fine for xls file.

Many thanks in advance

4

1 に答える 1

1

出力を HTML 形式で明示的に記述しています。次の行に注意してください。

response.Write("<meta http-equiv=""Content-Type"" content=""text/html; charset=UTF-8""/>")

出力の書き込みに使用しているオブジェクトに注目してください。

Dim htw As HtmlTextWriter = New HtmlTextWriter(sw)

これはすべて HTML を出力に出力しています。Excel はファイルをレンダリングするときに HTML 構造を理解するため、Excel ファイルに対しては "正常に動作" します。ただし、CSV ははるかに「フラットな」形式であり、プレーン テキスト (コンマで区切られたもの) しか認識しません。たとえば、このコードを使用して.txtファイルに書き込む場合にも、HTML タグが表示されます。

HTML を含まない CSV ファイルが必要な場合は、HTML コンテンツを記述しないでください。

于 2013-09-26T13:52:27.790 に答える