<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      XuGang

      記錄一個程序員的成長

       

      關于ASP.NET 將數據導出成Excel 的總結[上]

       

      由于項目需要,必須實現將ASP.NET 中的網格數據或者數據集中的數據導出成Excel 文件。

       

       在博客園里尋找了一陣子,發現幾篇不錯的文章:

      A. 林子的“Excel讀寫管理類庫ExcelManager” 對Excel文件的讀寫不錯

          ExcelManager -- 基于.Net的Excel讀寫管理類庫(一)

          ExcelManager--基于.Net的Excel讀寫管理類庫(二)

       

      B. henry基于EXCEL 的WEB 報表輸出組件 也不錯,

          只是IE的安全設置不允許運行未標記為安全的activeX控件,需要更改IE的安全設置。

       

      C. 如果只是將頁面“網格控件”當前頁所顯示的數據導出成Excel 文件,那GridView 導出Excel 研究 非常不錯了。

      全文如下:

      =========================================================================================

      GridView導出Excel研究

       

      Introduction:

      GridView中的數據導出為Excelweb應用中的常見功能。在不同的應用場景下有不同的導出技術。在本文中我將介紹一些導出的技術,希望對您有所幫助

      GridView Export the Excel (Basic Code): 

       

      首先看一個基礎的應用。創建一個表格,見截圖

       

      然后將數據庫中的數據綁定到GridView中的數據,代碼如下:

      private void BindData()

      {

      SqlConnection myConnection = new SqlConnection("Server=localhost;Database=School;Trusted_Connection=true");

      SqlDataAdapter ad = new SqlDataAdapter("SELECT * FROM Users", myConnection);

      DataSet ds = new DataSet();

      ad.Fill(ds);

      gvUsers.DataSource = ds;

      gvUsers.DataBind();

      }


      現在,GridView中已經綁定了數據,接下來的任務就是導出到Excel。下面是button事件中的代碼

      Response.ClearContent();

      Response.AddHeader("content-disposition", "attachment; filename=MyExcelFile.xls");

      Response.ContentType = "application/excel";

      StringWriter sw = new StringWriter();

      HtmlTextWriter htw = new HtmlTextWriter(sw);

      gvUsers.RenderControl(htw);

      Response.Write(sw.ToString());

      Response.End();

      并且還需要override一下VerifyRenderingInServerForm方法(這一點非常重要,否則在點擊按鈕后會報錯,譯者注)代碼如下:

      public override void VerifyRenderingInServerForm(Control control)

      {

      }

      點擊導出按鈕后會彈出對話框,詢問您打開或保存。選擇打開文件,導出到Excel的結果如下圖:


      Exporting GridView to Excel With Style:

      您是否注意到了以上代碼存在一些的問題?是的,ID列開頭的0都被截去了。如果你的ID000345,導出后就編程了345。這個問題可以通過把css添加到輸出流中來解決。為了使ID列正確顯示,您需要將其儲存為文本格式。Excel中的文本格式表示為"mso-number-format:"\@"

      protected void Btn_ExportClick(object sender, EventArgs e)

      {

      string style = @"<style> .text { } </script> ";

      Response.ClearContent();

      Response.AddHeader("content-disposition", "attachment; filename=MyExcelFile.xls");

      Response.ContentType = "application/excel";

      StringWriter sw = new StringWriter();

      HtmlTextWriter htw = new HtmlTextWriter(sw);

      gvUsers.RenderControl(htw);

      // Style is added dynamically

      Response.Write(style);

      Response.Write(sw.ToString());

      Response.End();

      }

      public override void VerifyRenderingInServerForm(Control control)

      {

      }

       在上面的代碼中,我通過”style”變量來控制GridView列的樣式。并通過Respnose.Write方法將其添加到輸出流中。最后把樣式添加到ID列。這一步需要在RowDataBound事件中完成

      protected void gvUsers_RowDataBound(object sender, GridViewRowEventArgs e)

      {

      if (e.Row.RowType == DataControlRowType.DataRow)

      {

      e.Row.Cells[1].Attributes.Add("class", "text");

      }

      }

       修改的結果如下:



      Exporting GridView With LinkButtons and Paging: 

      如果要導出的GridView中包含LinkButton或者分頁(出現分頁碼時,譯者注) 則將出現錯誤:


      通過修改頁文件可以修正這個問題:EnableEventValidation = "false".

      <%@ Page Language="C#" EnableEventValidation="false" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

      看一下導出的文件


       

      在導出的文件中可以看見linkbuttondropdownlist控件,雖然dropdownlist控件顯示的數據的確是用戶所選的項,但怎么看也不像是一個導出文件(我倒是覺的挺cool的:)譯者注),現在應如何移除dropdownlist并顯示選擇的文字呢?

       
      我寫了一個
      DisableControls函數,用使循環的方法將linkbuttondropdownlist替換成literal控件

      private void DisableControls(Control gv)

      {

      LinkButton lb = new LinkButton();

      Literal l = new Literal();

      string name = String.Empty;

      for (int i = 0; i < gv.Controls.Count; i++)

      {

      if (gv.Controls[i].GetType() == typeof(LinkButton))

      {

      l.Text = (gv.Controls[i] as LinkButton).Text;

      gv.Controls.Remove(gv.Controls[i]);

      gv.Controls.AddAt(i, l);

      }

      else if (gv.Controls[i].GetType() == typeof(DropDownList))

      {

      l.Text = (gv.Controls[i] as DropDownList).SelectedItem.Text;

      gv.Controls.Remove(gv.Controls[i]);

      gv.Controls.AddAt(i, l);

      }

       

      if (gv.Controls[i].HasControls())

      {

      DisableControls(gv.Controls[i]);

      }

      }

      }

      方法非常簡單,只需將linkbutondropdownlist替換成literal控件,并將選擇項賦值給literal控件的文本屬性。該方法需要在導出前調用

      protected void Btn_ExportExcelPaging(object sender, EventArgs e)

      {

      DisableControls(gvUsers);

      Response.ClearContent();

      Response.AddHeader("content-disposition", "attachment; filename=MyExcelFile.xls");

      Response.ContentType = "application/excel";

      StringWriter sw = new StringWriter();

      HtmlTextWriter htw = new HtmlTextWriter(sw);

      gvUsers.RenderControl(htw);

      Response.Write(sw.ToString());

      Response.End();

      }

       

      現在的Excel中就只剩下選中文本了



      原文:http://gridviewguy.com/ArticleDetails.aspx?articleID=197

      代碼下載:GridViewExportToExcelAllYouNeed.zip

       

      posted on 2011-09-26 12:04  鋼鋼  閱讀(1922)  評論(3)    收藏  舉報

      導航

      主站蜘蛛池模板: 亚洲av永久无码精品天堂久久| 人妻精品中文字幕av| 激情伊人五月天久久综合| 一本av高清一区二区三区| 亚洲精品中文字幕码专区| 国产伦一区二区三区久久| 人妻系列无码专区免费| 久久99精品久久久久久 | 亚洲第一福利网站在线观看| 一卡2卡三卡4卡免费网站| 人人澡人人妻人人爽人人蜜桃| 成人动漫综合网| 国产精品国产三级国快看| 国产成人精品无码专区| 92国产精品午夜福利| 成人免费无遮挡在线播放| 无码人妻丰满熟妇片毛片| 日韩精品卡一卡二卡三卡四| 蜜芽久久人人超碰爱香蕉| 亚洲 一区二区 在线| 搡老熟女老女人一区二区| 亚洲熟女精品一区二区| 18禁视频一区二区三区| 日韩一区二区三区日韩精品| 亚洲男人天堂2018| 毛片在线播放网址| 国产玖玖视频| 国产一区在线播放av| 泽库县| 国产情侣一区二区三区| 亚洲日本VA中文字幕在线| 在线日韩日本国产亚洲| 亚洲码国产精品高潮在线| 欧洲性开放老太大| 男人的天堂va在线无码| 99精品国产综合久久久久五月天| 国产精品线在线精品| 国产精品自在欧美一区| 国产喷水1区2区3区咪咪爱AV| 夜夜躁狠狠躁2021| 四虎成人精品永久网站|