• 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);

        }

    佛为心,道为骨,儒为表,大度看世界; 技在手,能在身,思在脑,从容过生活; 三千年读史,不外功名利禄; 九万里悟道,终归诗酒田园;
  • 相关阅读:
    树莓派相关知识
    yum mysql 需要:libsasl2.so.2()(64bit)的解决办法
    python 虚拟环境
    pip 查看某个包有哪些版本并升级
    C# DiagnosticSource and DiagnosticListener
    C# IObservable与IObserver观察者模式
    Visual Studio编译正常,但仍显示红线(Visual studio compiles fine but still shows red lines)
    查看PDB Guid 工具 dumpbin.exe 路径
    VMware vSphere 7.0 安装教程
    gacutil.exe 文件路径
  • 原文地址:https://www.cnblogs.com/taofx/p/4137688.html
Copyright © 2020-2023  润新知