• 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;
        }  
  • 相关阅读:
    设计模式之工厂模式-抽象工厂(02)
    1036 跟奥巴马一起编程 (15 分)
    1034 有理数四则运算 (20 分)
    1033 旧键盘打字 (20 分)
    1031 查验身份证 (15 分)
    大学排名定向爬虫
    1030 完美数列 (25 分)二分
    1029 旧键盘 (20 分)
    1028 人口普查 (20 分)
    1026 程序运行时间 (15 分)四舍五入
  • 原文地址:https://www.cnblogs.com/wangjiaxiaoxi/p/6598694.html
Copyright © 2020-2023  润新知