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;
        }  
  • 相关阅读:
    关于最大最小的k个数的类型题总结
    最小的K个数(剑指offer)
    215. Kth Largest Element in an Array(返回数组中第几大元素)(leetcode)
    数组中出现次数超过一半的数字(剑指offer)
    二叉搜索树与双向链表(剑指offer)
    第四届蓝桥杯c/c++B组6
    第四届蓝桥杯c/c++B组7
    第四届蓝桥杯c/c++B组8
    第四届蓝桥杯c/c++B组9
    第五届蓝桥杯 c/c++ B组8
  • 原文地址:https://www.cnblogs.com/wangjiaxiaoxi/p/6598694.html
Copyright © 2011-2022 走看看