【问题标题】:Gridview Column Header missing when export to csv in asp.net在 asp.net 中导出到 csv 时缺少 Gridview 列标题
【发布时间】:2014-05-14 08:30:58
【问题描述】:

我正在将 gridview 导出到 csv 文件。下面的代码运行良好,但是 csv 文件中缺少 gridview 的列标题。

  Response.Clear()
    Response.Buffer = True
    Response.AddHeader("content-disposition", "attachment;filename=sample.csv")
    Response.Charset = ""
    Response.ContentType = "application/text"

    Dim sBuilder As StringBuilder = New System.Text.StringBuilder()


    For index As Integer = 0 To GridView1.Columns.Count - 1
        sBuilder.Append(GridView1.Columns(index).HeaderText + ","c)
    Next

    sBuilder.Append(vbCr & vbLf)

    For i As Integer = 0 To GridView1.Rows.Count - 1
        For k As Integer = 0 To GridView1.HeaderRow.Cells.Count - 1
            sBuilder.Append(GridView1.Rows(i).Cells(k).Text.Replace(",", "") + ",")
        Next
        sBuilder.Append(vbCr & vbLf)
    Next

    Response.Output.Write(sBuilder.ToString())
    Response.Flush()
    Response.[End]()

如何将列标题包含到 csv 中?

提前致谢。

【问题讨论】:

  • 首先,当您添加列名时,“c”不应位于附加的末尾,我将使用相同的方法来迭代列标题,例如GridView1.Columns.CountGridView1.HeaderRow.Cells.Count 但不能同时使用两者
  • 那么我应该把'c'放在哪里?
  • sBuilder.Append(GridView1.Columns(index).HeaderText + ","c) 中的最后一个c是做什么的?它是一个字符串吗?它在引号之外。它是一个字符?这不违反 .Append() 参数吗?
  • 不,它没有……我已经尝试删除那个“c”字符,但结果没有改变……
  • 根本不应该存在

标签: asp.net vb.net csv gridview


【解决方案1】:

我找到了解决我的问题的方法。我在导出到 csv 时使用下面的代码来获取 gridview 的列标题。

 For i As Integer = 0 To GridView1.HeaderRow.Cells.Count - 1
        sBuilder.Append(GridView1.HeaderRow.Cells(i).Text + ",")
 Next

请注意,即使 gridview 属性 'AutoGenerateColumns' 设置为 true,此代码也能正常工作..

以下是将gridview导出到csv的完整代码,带有列标题..

    Response.Clear()
    Response.Buffer = True
    Response.AddHeader("content-disposition", "attachment;filename=sample.csv")
    Response.Charset = ""
    Response.ContentType = "application/text"

    Dim sBuilder As StringBuilder = New System.Text.StringBuilder()

    For i As Integer = 0 To GridView1.HeaderRow.Cells.Count - 1
        sBuilder.Append(GridView1.HeaderRow.Cells(i).Text + ",")
    Next

    sBuilder.Append(vbCr & vbLf)

    For i As Integer = 0 To GridView1.Rows.Count - 1
        For k As Integer = 0 To GridView1.HeaderRow.Cells.Count - 1
            sBuilder.Append(GridView1.Rows(i).Cells(k).Text.Replace(",", "") + ",")
        Next
        sBuilder.Append(vbCr & vbLf)
    Next

    Response.Output.Write(sBuilder.ToString())
    Response.Flush()
    Response.[End]()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-27
    • 2010-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多