• 主要解决了Gridview导出到Excel


    前台代码如下不多说:
     1 <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" EnableEventValidation="false"%>
     2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     3 <html xmlns="http://www.w3.org/1999/xhtml">
     4 <head runat="server">
     5     <title>无标题页</title>
     6     <style type="text/css">
     7         #form1
     8         {
     9             height: 645px;
    10         }
    11     </style>
    12 </head>
    13 <body>
    14     <form id="form1" runat="server">
    15     <asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
    16         AutoGenerateColumns="False" CellPadding="4" ForeColor="#333333" 
    17         GridLines="None" Height="234px" 
    18         onpageindexchanging="GridView1_PageIndexChanging" Width="782px">
    19         <PagerSettings FirstPageText="首页" LastPageText="尾页" 
    20             Mode="NextPreviousFirstLast" NextPageText="下一页" PreviousPageText="上一页" />
    21         <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
    22         <Columns>
    23             <asp:BoundField DataField="id" HeaderText="序号">
    24                 <ItemStyle HorizontalAlign="Center" />
    25             </asp:BoundField>
    26             <asp:BoundField DataField="StuId" HeaderText="学号">
    27                 <ItemStyle HorizontalAlign="Center" />
    28             </asp:BoundField>
    29             <asp:BoundField DataField="StuPwd" HeaderText="密码">
    30                 <ItemStyle HorizontalAlign="Center" />
    31             </asp:BoundField>
    32             <asp:BoundField DataField="StuName" HeaderText="姓名">
    33                 <ItemStyle HorizontalAlign="Center" />
    34             </asp:BoundField>
    35             <asp:BoundField DataField="StuCardId" HeaderText="身份证号">
    36                 <ItemStyle HorizontalAlign="Center" />
    37             </asp:BoundField>
    38             <asp:BoundField DataField="TeaName" HeaderText="任课教师">
    39                 <ItemStyle HorizontalAlign="Center" />
    40             </asp:BoundField>
    41         </Columns>
    42         <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
    43         <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
    44         <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
    45         <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
    46         <EditRowStyle BackColor="#999999" />
    47         <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
    48     </asp:GridView>
    49     <br />
    50     <br />
    51     <asp:Button ID="Button1" runat="server" onclick="Button1_Click" 
    52         Text="导出到Excel" />
    53     </form>
    54 </body>
    55 </html>  
    View Code


    后台代码如下:注释很详细不再累赘

      1 using System;
      2 using System.Configuration;
      3 using System.Data;
      4 using System.Linq;
      5 using System.Web;
      6 using System.Web.Security;
      7 using System.Web.UI;
      8 using System.Web.UI.HtmlControls;
      9 using System.Web.UI.WebControls;
     10 using System.Web.UI.WebControls.WebParts;
     11 using System.Xml.Linq;
     12 using System.Data.SqlClient;///添加数据库操作的命名空间
     13 using System.IO;///添加输出操作的命名空间
     14 public partial class _Default : System.Web.UI.Page 
     15 {
     16     /// <summary>
     17     /// 绑定Gridview 控件的数据
     18     /// </summary>
     19     /// <returns></returns>
     20     protected bool BindDB()
     21     {
     22         string sqlcon = ConfigurationManager.ConnectionStrings["DBString"].ConnectionString;
     23         SqlConnection con = new SqlConnection(sqlcon);
     24         con.Open();
     25         string strSelect = "select * from Student ";
     26         SqlDataAdapter sda = new SqlDataAdapter(strSelect,sqlcon);
     27         DataSet ds = new DataSet();
     28         sda.Fill(ds);
     29         GridView1.DataSource = ds;
     30         try
     31         {
     32             GridView1.DataBind();
     33             return true;
     34         }
     35         catch
     36         {
     37             return false;
     38         }
     39         finally
     40         {
     41             con.Close();
     42         }
     43     }
     44     protected void Page_Load(object sender, EventArgs e)
     45     {
     46         if (!IsPostBack)
     47         {
     48             BindDB();///数据库绑定
     49         }
     50     }
     51     /// <summary>
     52     /// Gridview 分页操作 没有分业的可以不添加此方法
     53     /// </summary>
     54     /// <param name="sender"></param>
     55     /// <param name="e"></param>
     56     protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
     57     {
     58         GridView1.PageIndex = e.NewPageIndex;
     59         BindDB();
     60     }
     61     /// <summary>
     62     /// Gridview数据导出到Excel的操作
     63     /// </summary>
     64     /// <param name="sender"></param>
     65     /// <param name="e"></param>
     66     protected void Button1_Click(object sender, EventArgs e)
     67     {
     68         #region
     69         ///在导出的时候,如果某个字段为长数字(如身份证号码511922198507151512)、以0开头的编号(如0914490000)
     70         ///之类的数据。如果不加处理在导出的Excel文件中将会被分别当作5.11922E+17和809111212来处理,这样与我们要达到的
     71         ///实际效果不一致。所以我们要加以处理,即给单元格数据规定格式
     72         ///即我们在导出的时候把类型改掉
     73         //for (int i=0; i < GridView1.Rows.Count; i++)
     74         //{
     75         //    GridView1.Rows[i].Cells[4].Text = "'" + GridView1.Rows[i].Cells[4].Text;
     76         //}
     77         #endregion
     78  
     79         ///另一种方式就是 
     80         ///解决思路:在Excel中作一个包含有"012457890"的内容,设定单元格的显示方式,然后保存成Html的文件,
     81         ///在查看源代码. 发现在 CSS格式定义中有:td{mso-number-format:"\@";}.这样问题就容易解决了.我用的此种方式
     82  
     83         GridView1.AllowPaging = false;///清除分页,便于导出数据
     84         BindDB();  ///绑定Griedview数据                            
     85         Response.ClearContent();
     86         Response.Charset = "GB2312"; ///设定输出的字符集  
     87         string strStyle = "<style>td{mso-number-format:\"\\@\";}</style>"; ///设置输出格式
     88  
     89         ///解决导出到Excel2003乱码问题
     90         ///HttpUtility.UrlEncode("学生信息表.xls", System.Text.Encoding.UTF8).ToString())                                                                  
     91         Response.AddHeader("content-disposition", "attachment; filename=" +
     92                            HttpUtility.UrlEncode("学生信息表.xls", System.Text.Encoding.UTF8).ToString());      
     93         Response.ContentType = "application/excel"; ///设置导出文件的格式 
     94         StringWriter sw = new StringWriter();
     95         HtmlTextWriter htw = new HtmlTextWriter(sw);
     96         sw.WriteLine(strStyle); ///读取格式
     97         
     98         ///GridView1.Columns[11].Visible = false; ///某一列Gridview数据不导出
     99  
    100         GridView1.RenderControl(htw);
    101         Response.Write(sw.ToString()); ///把HTML写回浏览器  
    102         Response.End();
    103         GridView1.AllowPaging = true;///恢复分业
    104         BindDB();///绑定Griedview数据 
    105     }
    106     /// <summary>
    107     /// 此方法一定要重载,否则报错!
    108     /// </summary>
    109     /// <param name="control"></param>
    110     public override void VerifyRenderingInServerForm(Control control)
    111     {
    112     }
    113 } 
    View Code
    主要解决了Gridview导出到Excel  
     

  • 相关阅读:
    Element ui 的使用
    Vue基本介绍
    静态界面传值javascript
    手机网页怎么禁止缩放、拖放、如何屏蔽到手机本身键盘
    jQuery学习之prop和attr的区别示例介绍
    jquery复选框 选中事件 及其判断是否被选中
    手机端html5触屏事件(touch事件)
    页面滚动到底部自动 Ajax 获取文章
    转Python RegEx正则
    转Python 日期
  • 原文地址:https://www.cnblogs.com/zxd543/p/3079482.html
Copyright © 2020-2023  润新知