zoukankan      html  css  js  c++  java
  • c#导出excel的问题

    1.关于后台返回了文件流但是前台并没有跳出文件下载的提示;

    解:因为后台使用了一般处理程序,刚开始使用了post请求的方式,并没有半毛钱的作用。所以后来选择了在js里直接用href跳转的方式

     function outexcel() {
             //因为列表使用了多选框所以这里要对勾选的记录进行判断
        
                var rows = $('#tab_list').datagrid('getSelections');
                if (rows != "") {
                    var result = "";
                    for (var i = 0; i < rows.length; i++) {
                        if (result == "") {
                            result = rows[i].Id;
                        }
    
                        else
                            result = result + "," + rows[i].Id;
                    }
                    window.location.href = "XXXX.ashx?type=outexcel&Id=" + result;
    
    
                } else {
                    msgShow('提示', '请选择要导出的报文', 'error');
                }
        

    2、导出时主要用了一个网上找来的类

        /// <summary>
        /// 导出Excel文件,并自定义文件名
        /// </summary>
        public static void DataTable3Excel(System.Data.DataTable dtData, String FileName)
        {
            GridView dgExport = null;
            HttpContext curContext = HttpContext.Current;
            StringWriter strWriter = null;
            HtmlTextWriter htmlWriter = null;
    
            if (dtData != null)
            {
                //HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8);这句在使用的时候出现了部分乱码,由于我是使用了网页所以改成如下这句
    HttpContext.Current.Response.Write("<meta http-equiv=Content-Type; content=text/html;charset=utf-8>"); curContext.Response.AddHeader(
    "content-disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8) + ".xls"); curContext.Response.ContentType = "application nd.ms-excel"; curContext.Response.ContentEncoding = System.Text.Encoding.UTF8; curContext.Response.Charset = "GB2312"; strWriter = new StringWriter(); htmlWriter = new HtmlTextWriter(strWriter); dgExport = new GridView(); dgExport.DataSource = dtData.DefaultView; dgExport.AllowPaging = false; dgExport.DataBind(); dgExport.RenderControl(htmlWriter); curContext.Response.Write(strWriter.ToString()); curContext.Response.End(); } }

    3、对于mysql导出excel时增加序号一列

    select  @rownum:=@rownum+1 as rownum, 字段1,字段2 from XXX表 ,(select    @rownum:=0) as it  where 。。。。条件

    切记(select @rownum:=0) as it一定是跟XXX表放一起的,千万不要放到where 后面去了。

    这句话在mysql客户端用的好好的,结果在自己的程序里就爆了个错误。于是找了另一个方法直接在dataTable的前面加一列序号

       /// <summary>
        /// 将dt增加一列序号
        /// </summary>
        /// <param name="dt"></param>
        /// <returns></returns>
        public static DataTable AddCol(DataTable dt)
        {
            DataTable dtR;   //返回值  
            DataColumn dtNewCol = new DataColumn("序号", typeof(string)); //创建ID列  
            dt.Columns.Add(dtNewCol);
            dt.Columns["序号"].SetOrdinal(0);
            dtR = dt;
            int dtc = dtR.Rows.Count;    //dtc  行数  
            for (int i = 0; i < dtc; i++)
            {
                dtR.Rows[i]["序号"] = (i + 1).ToString();
            }
            return dtR;
        }  
  • 相关阅读:
    使用密码解密TACACS+的报文
    C9K Stackwise Virtual(三)
    Webhook Configuration Example
    sup-bootflash和bootflash
    WLC5508 license没有500个?
    AAA Server Groups
    关于FlexConnect的Bug!
    Bug搬运工-CSCve57121--Cisco 2800, 3800 and 1560 series APs fail to pass traffic
    Bug搬运工-CSCvb29354-1810 OEAP cannot join vWLC
    阿里云云计算认证ACP模拟考试练习题第1套模拟题分享(共10套)
  • 原文地址:https://www.cnblogs.com/wangjiaxiaoxi/p/6598694.html
Copyright © 2011-2022 走看看