麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

Asp.net導出Excel文件

2019-11-17 02:02:47
字體:
來源:轉載
供稿:網友

asp.net導出Excel文件

參考了網上其他大神的寫法,也是利用控件的RenderControl功能,得到該控件生成的HTML,然后以Excel文件的類型輸出到客戶端。

不同的地方是我自己添加了Response.Flush()方法,這樣在生成數據的時候就已經彈出了下載框,而不必在同樣的頁面等待一會兒。如圖:

點擊導出Excel按鈕后,直接彈出下載框。

注:Response.Flush()的作用是將緩沖信息輸出到頁面。

    /// <summary>    /// 把DataTable內容導出excel并返回客戶端     /// </summary>    /// <param name="header">標題行</param>    /// <param name="fileName">文件名稱</param>    public void DataTable2Excel(TableCell[] header, string fileName)    {       // IO用于導出并返回excel文件        var strWriter = new StringWriter();       var htmlWriter = new HtmlTextWriter(strWriter);       // 設置編碼和附件格式        Response.ContentType = "application/ms-excel";       Response.ContentEncoding = Encoding.GetEncoding("gb2312");       Response.Charset = "gb2312";       if (!string.IsNullOrEmpty(fileName))       {           fileName = HttpUtility.UrlEncode(fileName, Encoding.UTF8);//處理中文名亂碼問題           Response.AppendHeader("Content-Disposition", ("attachment;filename=" + (fileName.ToLower().EndsWith(".xls") ? fileName : fileName + ".xls")));       }       Response.Flush();       var gvExport = new GridView();// 重新定義一個無分頁的GridView var dt = new DataTable();//這里是要導出的數據       gvExport.DataSource = dt.DefaultView;       gvExport.AllowPaging = false;       gvExport.RowDataBound += dgExport_RowDataBound; //優化導出數據顯示,如身份證、12-1等顯示異常問題       gvExport.DataBind();       if (header != null && header.Length > 0)//處理表頭       {            gvExport.HeaderRow.Cells.Clear();            gvExport.HeaderRow.Cells.AddRange(header);       }       gvExport.RenderControl(htmlWriter);// 返回客戶端        Response.Write(strWriter);       Response.End();    }

    /// <summary>    /// 用來優化導出數據顯示    /// </summary>    /// <param name="sender"></param>    /// <param name="e"></param>    PRotected void dgExport_RowDataBound(object sender, GridViewRowEventArgs e)    {        if (e.Row.RowType != DataControlRowType.DataRow) return;        foreach (var cell in e.Row.Cells.Cast<TableCell>().Where(cell => Regex.IsMatch(cell.Text.Trim(), @"^/d{12,}$") || Regex.IsMatch(cell.Text.Trim(), @"^/d+[-]/d+$")))        {            cell.Attributes.Add("style", "vnd.ms-excel.numberformat:@");        }    }

總結:

1、方法調用時總會報錯:Server cannot set content type after HTTP headers have been sent.

  原因:在 Response.AppendHeader 方法調用之前,先調用了Response.Flush()方法。

2、報錯:必須放在具有 runat=server 的窗體標記內.

解決辦法:public override void VerifyRenderingInServerForm(Control control){} //不需要添加內容


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 好吊色欧美一区二区三区四区 | 一区二区三区视频在线 | 久久蜜桃精品一区二区三区综合网 | 久久久久久久久久久久久久国产 | 97久色 | 羞羞色网站 | 草草在线视频 | 最新国产毛片 | 射逼网站 | 色人阁五月天 | 成码无人av片在线观看网站 | 看一级毛片 | 黄色视频a级毛片 | 最近日本电影hd免费观看 | 久久精品亚洲欧美日韩精品中文字幕 | 色婷婷久久久 | 经典三级av在线 | 香蕉久久久 | 免费淫视频 | 国产在线精品一区二区夜色 | 国产精品久久99精品毛片三a | 久久国产乱子伦精品 | 日本高清在线免费 | 欧美电影在线观看 | 国产91免费看 | 久久青草影院 | 国产精品久久久久久婷婷天堂 | 欧美三级日本三级少妇99 | 未成年人在线观看 | 日韩视频在线观看免费视频 | 91精品国产乱码久久桃 | 最新中文字幕日本 | 国产精品免费麻豆入口 | 在线播放黄色网址 | 国产在线看一区 | 日本成年免费网站 | 欧美日韩在线看片 | 国产精品久久久免费观看 | 毛片在线免费观看网址 | 欧美国产一级片 | 国产精品aⅴ |