zoukankan      html  css  js  c++  java
  • 将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
        }
  • 相关阅读:
    Ruby笔记四(数组)
    中央直属企业名单【中国级别最高的169家企业】(转)找工作按这个来
    循环pthread_create导致虚拟内存上涨(续1)
    除掉行数小程序
    client comserver编译配置运行详细说明
    网络监听技术概览(转待看)
    查看 linux系统版本,内核,CPU,MEM,位数的相关命令(实验)
    项目中Shell脚本说明(待完善)
    多线程 or 多进程 (实验1)
    循环pthread_create导致虚拟内存上涨(续2)
  • 原文地址:https://www.cnblogs.com/sunfeiwto/p/1334892.html
Copyright © 2011-2022 走看看