none
如何给asp.net网页上的 “数据导入到excel表的代码” 添加一行中文列名 RRS feed

  • 问题

  •     以下是我使用Asp.net 和SQL数据库做成网页(如图1),然后把网页上的数据输出到Excel表中去的代码(代码1),我的问题是:我的SQL中各个字段都是以英文命名的,用GridView在网页显示时我把改成中文,但这段代码输出时,标题栏为英文。请问有什么办法给它变成中文标题么?如果是在SQL中用 "***  as 中文名",就会对我的其他代码造成影响,因此我希望能否在不改变SQL代码的情况下,改Excel表中的英文标题为中文标题呢?

        我猜想可能直接在private void ExportExcel()中增加写入中文标题栏的代码应该是比较好实现的,可我尚未接触过此类代码,请大家帮忙看看,3Q!

    ---------------------------------------代码1-----------------------------------------

    private void ExportExcel()
        {
            HttpContext curContext = System.Web.HttpContext.Current;
            System.IO.StringWriter strWriter = new StringWriter();
            System.Web.UI.HtmlTextWriter htmlWriter = new HtmlTextWriter(strWriter);
            curContext.Response.ContentType = "application/vnd.ms-excel";
            curContext.Response.ContentEncoding = Encoding.GetEncoding("GB2312");
            curContext.Response.Charset = "GB2312";
    
            GridView GV = new GridView();//一个无分页的GridView
            GV.DataSource = SqlDataSource_Search;
            GV.AllowPaging = false;
            GV.DataBind();
            GV.RenderControl(htmlWriter);
            curContext.Response.Write(strWriter.ToString());
            curContext.Response.End();
        }

    ----------------------------------图1--------------------------------------


    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!

    2012年10月17日 7:12

答案

  • 谢谢您的解答,按照您的思路我解决了问题,但我没明白为什么要用

    for (int i = 0; i < GV.HeaderRow.Cells.Count;i++ )

    这个标题栏怎么能用到循环呢?

    我直接用的

    GV.HeaderRow.Cells[0].Text = "地址";

    GV.HeaderRow.Cells[1].Text = "姓名";

    GV.HeaderRow.Cells[2].Text = "金额";

    是不是我理解得不够深?


    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!

    上面说明设置方法 你可以把你的中文放到数组中方便修改

        GV.DataBind();
        String[] ChineseName = {"姓名","标题"} ;//更多字段,总数为GV.HeaderRow.Cells.Count
        for (int i = 0; i < GV.HeaderRow.Cells.Count;i++ )
          GV.HeaderRow.Cells[i].Text = ChineseName[i];
        GV.RenderControl(htmlWriter);


    【孟子E章】

    2012年10月18日 3:39
    版主

全部回复

  • GV.Columns[从0开始的索引].ColumnName="你的新名字";

    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年10月17日 9:10
  • 能否具体些呢?您提供的代码是添加在

    private void ExportExcel() 中么?

    是添加在

    GridView GV = new GridView();//一个无分页的GridView
            GV.DataSource = SqlDataSource_Search;

    后面么?


    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!

    2012年10月17日 11:46
  •     GV.DataBind();
        for (int i = 0; i < GV.HeaderRow.Cells.Count;i++ )
          GV.HeaderRow.Cells[i].Text = "中文";
        GV.RenderControl(htmlWriter);


    【孟子E章】

    2012年10月17日 13:39
    版主
  • 谢谢您的解答,按照您的思路我解决了问题,但我没明白为什么要用

    for (int i = 0; i < GV.HeaderRow.Cells.Count;i++ )

    这个标题栏怎么能用到循环呢?

    我直接用的

    GV.HeaderRow.Cells[0].Text = "地址";

    GV.HeaderRow.Cells[1].Text = "姓名";

    GV.HeaderRow.Cells[2].Text = "金额";

    是不是我理解得不够深?


    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!

    2012年10月18日 2:05
  • 不是,你每一个标题不一样是不能用循环的。孟版主按照我的想法大概只是举一个例子给你看吧。

    PS:应该用HeaderRow.Cell[0-index].Text=而不是用Columns,这一点我错了,Sorry;)


    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年10月18日 2:08
  • 谢谢您的解答,按照您的思路我解决了问题,但我没明白为什么要用

    for (int i = 0; i < GV.HeaderRow.Cells.Count;i++ )

    这个标题栏怎么能用到循环呢?

    我直接用的

    GV.HeaderRow.Cells[0].Text = "地址";

    GV.HeaderRow.Cells[1].Text = "姓名";

    GV.HeaderRow.Cells[2].Text = "金额";

    是不是我理解得不够深?


    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!

    上面说明设置方法 你可以把你的中文放到数组中方便修改

        GV.DataBind();
        String[] ChineseName = {"姓名","标题"} ;//更多字段,总数为GV.HeaderRow.Cells.Count
        for (int i = 0; i < GV.HeaderRow.Cells.Count;i++ )
          GV.HeaderRow.Cells[i].Text = ChineseName[i];
        GV.RenderControl(htmlWriter);


    【孟子E章】

    2012年10月18日 3:39
    版主
  • 非常感谢2位的回答!特别是将中文放到数组中的方法我正好要大量应用,这下可省了不少事!3Q

    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!

    2012年10月18日 4:25