Gridview数据导出到ExcelWord 防止出现乱码

1、页面中添加绿色字体代码
<%@ Page Language="C#" CodeFile="111.aspx.cs" Inherits="111" EnableEventValidation="false" %>
2、类文件中的方法/// <summary>

    /// 导出excel按钮

    /// </summary>

    /// <param name="sender"></param>

    /// <param name="e"></param>

    protected void lbToExcel_Click(object sender, EventArgs e)

    {

//注:gvData为Gridview控件的名称

        gvData.AllowPaging = false;

        gvData.DataBind();

//导出文件的文件名

        var fileName = string.Format("{0:yyyyMMddHHmmss}", DateTime.Now);

//导出的具体实现逻辑

        ExportControl(gvData, "Excel", fileName);

        gvData.AllowPaging = true;

        gvData.Columns[0].Visible = true;

    }

    /// <summary>

    /// 将Web控件或页面信息导出(带文件名参数)

    /// </summary>

    /// <param name="source">控件实例</param>       

    /// <param name="DocumentType">导出类型:Excel或Word</param>

    /// <param name="filename">保存文件名</param>

    public void ExportControl(System.Web.UI.Control source, string DocumentType, string filename)

    {

        //设置Http的头信息,编码格式

        if (DocumentType == "Excel")

        {

            //防止出现乱码,加上这行可以防止在只有一行数据时出现乱码Gridview数据导出到Excel/Word <wbr>防止出现乱码

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

            //Excel           

            HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(filename + ".xls", System.Text.Encoding.UTF8));

            HttpContext.Current.Response.ContentType = "application/ms-excel";

        }

        else if (DocumentType == "Word")

        {

            //防止出现乱码,加上这行可以防止在只有一行数据时出现乱码Gridview数据导出到Excel/Word <wbr>防止出现乱码

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

            //Word

            HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(filename + ".doc", System.Text.Encoding.UTF8));

            HttpContext.Current.Response.ContentType = "application/ms-word";

        }

        HttpContext.Current.Response.Charset = "UTF-8";

        HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;

        //关闭控件的视图状态

        source.Page.EnableViewState = false;

        //初始化HtmlWriter

        System.IO.StringWriter writer = new System.IO.StringWriter();

        System.Web.UI.HtmlTextWriter htmlWriter = new System.Web.UI.HtmlTextWriter(writer);

        source.RenderControl(htmlWriter);

        //输出

        HttpContext.Current.Response.Write(writer.ToString());

        HttpContext.Current.Response.End();

    }

    //重写一个方法,必须加上次方法

    public override void VerifyRenderingInServerForm(Control control)

    {

        //base.VerifyRenderingInServerForm(control);

    }

佛为心,道为骨,儒为表,大度看世界; 技在手,能在身,思在脑,从容过生活; 三千年读史,不外功名利禄; 九万里悟道,终归诗酒田园;
原文地址:https://www.cnblogs.com/taofx/p/4137688.html