zoukankan      html  css  js  c++  java
  • 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);

        }

    佛为心,道为骨,儒为表,大度看世界; 技在手,能在身,思在脑,从容过生活; 三千年读史,不外功名利禄; 九万里悟道,终归诗酒田园;
  • 相关阅读:
    java.io.file
    连线小游戏
    发票类型区分的正则表达式(仅区分普票专票)
    mybatis: No enum constant org.apache.ibatis.type.JdbcType."VARCHAR"
    bootstrap inputfile 使用-上传,回显
    微积分极限中一例
    oracle 查看表结构语句
    redis无法连接
    项目配置shiro原缓存注解失效
    bug 找不到或无法加载主类main.java.*
  • 原文地址:https://www.cnblogs.com/taofx/p/4137688.html
Copyright © 2011-2022 走看看