zoukankan      html  css  js  c++  java
  • ASP.NET2.0中如何将Gridview资料输出至Excel、Word

    在透過使用Visual Studio 2005中的Gridview 將呈現資料時,使用

    者常要求將資料輸出至Excel或Word 文件中,要怎麼做呢?


    將GridView 匯出至Excel 這個問題,從早期Visual Studio

    2002/2003中的Grid 就有解決方案了,但在GridView中則有少許

    變化, 詳細的語法如下:

    VB語法

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click

    Response.Clear()
    Response.AddHeader("content-disposition", "attachment;filename=FileName.xls")
    Response.Charset = "big5"
    Response.ContentType = "application/vnd.xls"
    Dim stringWrite As System.IO.StringWriter = New System.IO.StringWriter
    Dim htmlWrite As System.Web.UI.HtmlTextWriter = New HtmlTextWriter(stringWrite)
    GridView1.RenderControl(htmlWrite) <--非GridView1請更改為要輸出名稱
    Response.Write(stringWrite.ToString)
    Response.End()

    End Sub
    務必加入下段語法
    Public Overloads Overrides Sub VerifyRenderingInServerForm(ByVal control As Control)

    'Confirms that an HtmlForm control is rendered for the specified ASP.NET server control at run time.

    End Sub

    C#語法

    protected void Button1_Click(object sender, EventArgs e)
        {
             Response.Clear();
             Response.AddHeader("content-disposition", "attachment;filename=FileName.xls");
             Response.Charset = "big5";
             Response.ContentType = "application/vnd.xls";
             System.IO.StringWriter stringWrite = new System.IO.StringWriter();
             System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
             GridView1.AllowPaging = false;
             GridView1.AutoGenerateEditButton = false;
             GridView1.AutoGenerateDeleteButton = false;
             GridView1.DataBind();
             GridView1.RenderControl(htmlWrite);
             Response.Write(stringWrite.ToString());
             Response.End();
        }
        public override void VerifyRenderingInServerForm(Control control)
        {
            /* Confirms that an HtmlForm control is rendered for the specified ASP.NET
            server control at run time. */
        }

    同樣的如果要將GridView資料輸出至Word文件,只要將

    FileName.xls 改為 FileName.doc 及 application/vnd.xls 改為 application/vnd.doc

    就可將資料輸出至Word文件中

    例:
    <%@ Page Language="C#" EnableEventValidation="false" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
    >

    <script runat="server">
      ICollection CreateDataSource( )
      
    {
        System.Data.DataTable dt 
    = new System.Data.DataTable();
        System.Data.DataRow dr;
        dt.Columns.Add(
    new System.Data.DataColumn("id"typeof(Int32)));
        dt.Columns.Add(
    new System.Data.DataColumn("PkID"typeof(string)));
        dt.Columns.Add(
    new System.Data.DataColumn("Title"typeof(string)));
        
    for (int i = 0; i < 6; i++)
        
    {
          dr 
    = dt.NewRow();
          dr[
    0= i;
          dr[
    1= "123456789123456789123456789";
          dr[
    2= "<a href='http://dotnet.aspx.cc/'>欢迎光临【孟宪会之精彩世界】</a>";
          dt.Rows.Add(dr);
        }

        System.Data.DataView dv 
    = new System.Data.DataView(dt);
        
    return dv;
      }


      protected 
    void Page_Load( object sender, EventArgs e )
      
    {
        
    if (!IsPostBack)
        
    {
          GridView1.BorderWidth 
    = Unit.Pixel(2);
          GridView1.BorderColor 
    = System.Drawing.Color.DarkOrange;
          GridView1.DataSource 
    = CreateDataSource();
          GridView1.DataBind();
        }

      }


      protected 
    void Button1_Click( object sender, System.EventArgs e )
      
    {
        Response.Clear();
        Response.Buffer 
    = true;
        Response.Charset 
    = "GB2312";
        Response.AppendHeader(
    "Content-Disposition""attachment;filename=FileName.xls");
        
    // 如果设置为 GetEncoding("GB2312");导出的文件将会出现乱码!!!
        Response.ContentEncoding = System.Text.Encoding.UTF7;
        Response.ContentType 
    = "application/ms-excel";//设置输出文件类型为excel文件。 
        System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
        System.Web.UI.HtmlTextWriter oHtmlTextWriter 
    = new System.Web.UI.HtmlTextWriter(oStringWriter);
        
    this.GridView1.RenderControl(oHtmlTextWriter);
        Response.Output.Write(oStringWriter.ToString());
        Response.Flush();
        Response.End();

      }

      public override 
    void VerifyRenderingInServerForm( Control control )
      
    { }
      protected 
    void GridView1_RowDataBound( object sender, GridViewRowEventArgs e )
      
    {
        
    if (e.Row.RowType == DataControlRowType.DataRow)
        
    {
          e.Row.Cells[
    1].Attributes.Add("style""vnd.ms-excel.numberformat:@;");
        }

      }

    </script>

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
      
    <title>将 GridView 导出到 Excel 文件中</title>
    </head>
    <body>
      
    <form id="form1" runat="server">
        
    <asp:GridView ID="GridView1" runat="server" OnRowDataBound="GridView1_RowDataBound"
          AutoGenerateColumns
    ="false">
          
    <Columns>
            
    <asp:BoundField HeaderText="序号" DataField="id" />
            
    <asp:BoundField HeaderText="身份证号" DataField="PkID" />
            
    <asp:BoundField HeaderText="网址" DataField="Title" ReadOnly="true" HtmlEncode="false" />
          
    </Columns>
        
    </asp:GridView>
        
    <asp:Literal ID="HiddenOut" runat="server" />
        
    <asp:Button ID="Button1" runat="server" Text="导出" OnClick="Button1_Click" />
      
    </form>
    </body>
    </html>

  • 相关阅读:
    JDA 8.0.0.0小版本升级
    Mybatis中的resultType和resultMap
    FP硬绑
    消息 14607,级别 16,状态 1,过程 sp_send_dbmail,第 141 行 profile 名称无效
    检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件失败,原因是出现以下错误: 8000401a 因为配置标识不正确,系统无法开始服务器进程。请检查用户名和密码。 (异常来自 HRESULT:0x8000401A)。 在 BatchImportEntryTable.GetExcelData(String FileName)
    工单重复回写
    ORACLE 对一个表进行循环查数,再根据MO供给数量写入另一个新表
    siebel切换数据源
    MYSQL TIMESTAMP with implicit DEFAULT value is deprecated.
    多账户的统一登录 (转)
  • 原文地址:https://www.cnblogs.com/jackzhang/p/569122.html
Copyright © 2011-2022 走看看