2

我想创建一个带有粗体标题文本的 csv 文件。以下代码正在创建一个标题行。但我希望这个标题为粗体样式。

       'Add Response header 

    Response.Clear()
    Response.AddHeader("content-disposition", String.Format("attachment;filename={0}.csv", "check_"))
    Response.Charset = ""
    Response.ContentType = "application/vnd.csv"

    Try
        Dim sb As New StringBuilder()
        'Add Header  dr.GetName(count)     

        For count As Integer = 0 To GridView1.Columns.Count - 1
            If GridView1.Columns(count) IsNot Nothing Then
                sb.Append(GridView1.Columns(count).HeaderText)
            End If
            If count < GridView1.Columns.count - 1 Then
                sb.Append(",")
            End If
        Next
        Response.Write(sb.ToString() + vbLf)
        Response.Flush()

    Catch ex As Exception
        Response.Write(ex.Message)
    End Try
    Response.[End]()
4

2 回答 2

4

CSV 是由逗号 (,) 分隔的纯文本

它没有附加任何样式。

于 2012-04-17T06:57:17.960 回答
1

正如其他人已经提到的,CSV 只是没有格式的文本。

由于我假设您想要 excel 中的粗体标题并且您正在将 ASP.NET 导出GridView到 CSV 文件,因此还有其他两个选项:

  1. GridView将带有粗体标题的 HTML(HTML 表)呈现到文件中,excel 将正确解释它
  2. 创建一个真正的 excel 文件,我可以热情地推荐EPPlus是一个示例。

第一种方法的示例:

string attachment = "attachment; filename=Contacts.xls";
Response.ClearContent();
Response.AddHeader("content-disposition", attachment);
Response.ContentType = "application/ms-excel";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
GridView1.RenderControl(htw);
Response.Write(sw.ToString());
Response.End(); 

如果按上述方式运行代码,将产生HttpException如下结果:

'GridView' 类型的控件 'GridView1' 必须放置在带有 runat=server 的表单标记内。”

为避免此错误,请添加以下代码:

public override void VerifyRenderingInServerForm(Control control)
{
    // yes, it's correct that this is empty
}
于 2012-04-17T07:27:25.940 回答