[转载]gridview导出excel(不会有乱码)

gridview导出excel(不会有乱码)
2008-04-08 09:40

之前我有贴过gridview导出excel的代码,但那个有两上缺点,一:如果gridview有分页的话,那段代码只是导出的当前页的数据,第二页之后的数据是无法导出的。二:那段代码我朋友帮我改进后,可以导出所有页的数据,但是我现在再用导出的中文全是乱码。现在我贴的这个,可以避免上面的两个问题。希望对大家有所帮助。

    protected void lbtnExport_Click(object sender, EventArgs e)
    {
        Response.Clear();
        Page.Response.Buffer = true;
        Response.Charset = "gb2312";
        string strFileName = "FileName.xls";
        Response.AddHeader("content-disposition", "attachment;filename="+HttpUtility.UrlEncode(strFileName,System.Text.Encoding.UTF8));
        Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
        Response.ContentType = "application/ms-excel";
        System.IO.StringWriter stringWrite = new System.IO.StringWriter();


        DataView dv = (DataView)Session["ds"];
        string xls = @"<Table><TR>";
        int i;
        int j;
        //导出EXCEL显示的标题
        for (i = 1; i < dv.Table.Columns.Count; i++)
        {
            xls += @"<TD>" + gvAnalyze.Columns[i].ToString() + @"</TD>";   //dv.Table.Columns[i].Caption

        }
        //数据部分
        xls = xls + @"</TR>";
        for (i = 0; i < dv.Table.Rows.Count; i++)
        {
            xls = xls + @"<TR>";
            for (j = 0; j < dv.Table.Columns.Count; j++)
            {
                xls = xls + @"<TD>" + dv.Table.Rows[i][j].ToString() + @"</TD>";
            }
            xls = xls + @"</TR>";
        }
        xls = xls + @"</Table>";
        Response.Write(xls);
        Response.End();
        Binding();
    }

其中的session["dv"]我在数据绑定方法(即Binding)中给它赋过值了,所以使用的朋友,可以根本自己的要求灵活运用。

原文地址:https://www.cnblogs.com/xianzuoqiaoqi/p/1427017.html