• 将GridView导出到Excel并防止内容乱码


    我在数据库中建一个proc_ViewDriverDicpatch的储存过程,该储存过程主要完成对数据表进行交叉数据,完成交叉表功能,调用过程如下:
        public void BindData()
        
    {
            Yesidea.DAO.DbHelperSQL dbhelper 
    = new Yesidea.DAO.DbHelperSQL(new Yesidea.DAO.BaseDAO());
            SqlParameter[] parameters 
    = {
                        
    new SqlParameter("@TableName", SqlDbType.VarChar,50),
                        
    new SqlParameter("@纵轴", SqlDbType.VarChar,50),
                        
    new SqlParameter("@横轴", SqlDbType.VarChar,50),
                        
    new SqlParameter("@表体内容", SqlDbType.VarChar,20),
                        
    new SqlParameter("@是否加横向合计", SqlDbType.Bit),
                        
    new SqlParameter("@是否加纵向合计", SqlDbType.Bit)}
    ;
            parameters[
    0].Value = "ViewDicpatchDriver";
            parameters[
    1].Value = "dname";
            parameters[
    2].Value = "udept";
            parameters[
    3].Value = "mileage";
            parameters[
    4].Value = 1;
            parameters[
    5].Value = 1;
            DataSet ds 
    = dbhelper.RunProcedure("proc_ViewDriverDicpatch", parameters, "ViewDicpatchDriver");
            
    this.GridView1.DataSource = ds;
            
    this.GridView1.DataBind();
            
    this.GridView1.HeaderRow.Cells[0].Text = "司机姓名\部门";
        }

    输出为 Excel并防止文件内容乱码的代码如下:

        protected void btnExport_Click(object sender, EventArgs e)
        
    {
            Response.Clear();
            Response.AddHeader(
    "content-disposition""attachment;filename="" + Server.UrlEncode("FileName.xls"+ "");
            Response.Charset 
    = "GB2312";
            Response.ContentEncoding 
    = System.Text.Encoding.GetEncoding("GB2312");//设置输出流为简体中文
            Response.ContentType = "application/vnd.xls";
            System.IO.StringWriter stringWrite 
    = new System.IO.StringWriter();
            System.Web.UI.HtmlTextWriter htmlWrite 
    = new HtmlTextWriter(stringWrite);

            GridView1.AllowPaging 
    = false;
            BindData();
            GridView1.RenderControl(htmlWrite);

            Response.Write(stringWrite.ToString());
            Response.End();
            GridView1.AllowPaging 
    = true;
            BindData();
        }

    注意:在页面中千万别忘了添加如下代码。

        public override void VerifyRenderingInServerForm(Control control)
        
    {
            
    // Confirms that an HtmlForm control is rendered for
        }
  • 相关阅读:
    分页的实现
    调取地图map
    meta标签应用,适应手机屏幕以及关键词、描述的添加
    页面中公共部分的统一调用
    PC端变成手机端的时候,把特效去掉(把canvas标签去掉)
    IIS上绑定域名,发布上线
    动态截取字符串获取当前网页的URL地址
    Vue 打包后报错 Uncaught TypeError: Cannot redefine property: $router
    Vue项目部署到线上页面空白
    让从后台返回的数据在让elementui 的el-select 显示对应的label值而不是value值
  • 原文地址:https://www.cnblogs.com/sunfeiwto/p/1334892.html
Copyright © 2020-2023  润新知