天天看點

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

VS2005中 GridView導入Excel的導入需要注意的幾點

最近帶的項目遇到GridView導入Excel問題,總結出幾點:

1、如果出現下面的錯誤提示可用重載VerifyRenderingInServerForm方法解決。

錯誤提示:

類型“GridView”的控件“GridView1”必須放在具有 runat=server 的窗體标記内

在背景檔案中重載VerifyRenderingInServerForm方法,如:

public override void VerifyRenderingInServerForm(Control control)

{

     //base.VerifyRenderingInServerForm(control);

}

2、如果設定為 GetEncoding("GB2312"),導出的檔案将會出現亂碼。

可用Response.ContentEncoding = System.Text.Encoding.UTF7;

或者Encoding.UTF8等來解決,不過導入格式和字型上個人感覺UTF7比UTF8效果好些;

因人而異了:)

相關代碼如下:

Web.config配置:

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

<?xml version="1.0"?>

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

<!-- 

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

    注意: 除了手動編輯此檔案以外,您還可以使用 

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

    Web 管理工具來配置應用程式的設定。可以使用 Visual Studio 中的

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

     “網站”->“Asp.Net 配置”選項。

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

    設定和注釋的完整清單在 

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

    machine.config.comments 中,該檔案通常位于 

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

    \Windows\Microsoft.Net\Framework\v2.x\Config 中

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

-->

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

<configuration>

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

    <appSettings>

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

        <!--資料庫連接配接串-->

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

        <add key="ConnectionString" value="data source=.;initial catalog=Northwind;user id=sa;password=sa;persist security info=true;packet size=4096"/>

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

    </appSettings>

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

    <connectionStrings/>

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

    <system.web>

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

        <!-- 

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

            設定 compilation debug="true" 将調試符号插入

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

            已編譯的頁面中。但由于這會 

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

            影響性能,是以隻在開發過程中将此值 

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

            設定為 true。

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

        -->

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

        <compilation debug="true"/>

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

        <!--

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

            通過 <authentication> 節可以配置 ASP.NET 使用的 

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

            安全身份驗證模式,

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

            以辨別傳入的使用者。 

在VS2005中 GridView導入Excel的兩點小技巧-附源碼
在VS2005中 GridView導入Excel的兩點小技巧-附源碼

        <authentication mode="Windows"/>

在VS2005中 GridView導入Excel的兩點小技巧-附源碼
在VS2005中 GridView導入Excel的兩點小技巧-附源碼

            如果在執行請求的過程中出現未處理的錯誤,

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

            則通過 <customErrors> 節可以配置相應的處理步驟。具體說來,

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

            開發人員通過該節可以配置

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

            要顯示的 html 錯誤頁

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

            以代替錯誤堆棧跟蹤。

在VS2005中 GridView導入Excel的兩點小技巧-附源碼
在VS2005中 GridView導入Excel的兩點小技巧-附源碼

        <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

            <error statusCode="403" redirect="NoAccess.htm" />

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

            <error statusCode="404" redirect="FileNotFound.htm" />

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

        </customErrors>

在VS2005中 GridView導入Excel的兩點小技巧-附源碼
在VS2005中 GridView導入Excel的兩點小技巧-附源碼

    </system.web>

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

</configuration>

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

ASPX頁面代碼:

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

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

在VS2005中 GridView導入Excel的兩點小技巧-附源碼
在VS2005中 GridView導入Excel的兩點小技巧-附源碼

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

在VS2005中 GridView導入Excel的兩點小技巧-附源碼
在VS2005中 GridView導入Excel的兩點小技巧-附源碼

<html xmlns="http://www.w3.org/1999/xhtml" >

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

<head runat="server">

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

    <title>無标題頁</title>

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

</head>

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

<body>

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

    <form id="form1" runat="server">

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

    <div>

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

         

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

        <asp:GridView ID="GridView1" runat="server" AllowPaging="true" OnPageIndexChanging="Paging">

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

        </asp:GridView>

在VS2005中 GridView導入Excel的兩點小技巧-附源碼
在VS2005中 GridView導入Excel的兩點小技巧-附源碼

    </div>

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="導出到Excel" />

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

    </form>

在VS2005中 GridView導入Excel的兩點小技巧-附源碼
在VS2005中 GridView導入Excel的兩點小技巧-附源碼

</body>

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

</html>

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

執行個體代碼:

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

/*

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

 *    // by XiaoYin [10/22/2006]

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

 */

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

using System;

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

using System.Data;

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

using System.Configuration;

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

using System.Web;

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

using System.Web.Security;

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

using System.Web.UI;

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

using System.Web.UI.WebControls;

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

using System.Web.UI.WebControls.WebParts;

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

using System.Web.UI.HtmlControls;

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

using System.Data.SqlClient;

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

using System.Xml;

在VS2005中 GridView導入Excel的兩點小技巧-附源碼
在VS2005中 GridView導入Excel的兩點小技巧-附源碼

public partial class _Default : System.Web.UI.Page 

在VS2005中 GridView導入Excel的兩點小技巧-附源碼
在VS2005中 GridView導入Excel的兩點小技巧-附源碼
在VS2005中 GridView導入Excel的兩點小技巧-附源碼

    /// <summary>

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

    /// 連結字元串

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

    /// </summary>

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

    public string ConnectString

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

    {

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

        get

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

        {

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

            return ConfigurationManager.AppSettings["ConnectionString"];

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

        }

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

    }

在VS2005中 GridView導入Excel的兩點小技巧-附源碼
在VS2005中 GridView導入Excel的兩點小技巧-附源碼
在VS2005中 GridView導入Excel的兩點小技巧-附源碼

    /// 重載VerifyRenderingInServerForm方法

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

    /// 确認在運作時為指定的 ASP.NET 伺服器控件呈現 HtmlForm 控件。

在VS2005中 GridView導入Excel的兩點小技巧-附源碼
在VS2005中 GridView導入Excel的兩點小技巧-附源碼

    /// <param name="control">ASP.NET 伺服器控件,它必須位于 HtmlForm 控件中</param>

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

    public override void VerifyRenderingInServerForm(Control control)

在VS2005中 GridView導入Excel的兩點小技巧-附源碼
在VS2005中 GridView導入Excel的兩點小技巧-附源碼

        //base.VerifyRenderingInServerForm(control);

在VS2005中 GridView導入Excel的兩點小技巧-附源碼
在VS2005中 GridView導入Excel的兩點小技巧-附源碼
在VS2005中 GridView導入Excel的兩點小技巧-附源碼
在VS2005中 GridView導入Excel的兩點小技巧-附源碼

    protected void Page_Load(object sender, EventArgs e)

在VS2005中 GridView導入Excel的兩點小技巧-附源碼
在VS2005中 GridView導入Excel的兩點小技巧-附源碼

        if (!Page.IsPostBack)

在VS2005中 GridView導入Excel的兩點小技巧-附源碼
在VS2005中 GridView導入Excel的兩點小技巧-附源碼

            BindData();

在VS2005中 GridView導入Excel的兩點小技巧-附源碼
在VS2005中 GridView導入Excel的兩點小技巧-附源碼
在VS2005中 GridView導入Excel的兩點小技巧-附源碼
在VS2005中 GridView導入Excel的兩點小技巧-附源碼
在VS2005中 GridView導入Excel的兩點小技巧-附源碼

    /// 綁定資料

在VS2005中 GridView導入Excel的兩點小技巧-附源碼
在VS2005中 GridView導入Excel的兩點小技巧-附源碼

    public void BindData()

在VS2005中 GridView導入Excel的兩點小技巧-附源碼
在VS2005中 GridView導入Excel的兩點小技巧-附源碼

        // 查詢

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

        string query = "SELECT * FROM Categories";

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

        SqlConnection myConnection = new SqlConnection(ConnectString);

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

        SqlDataAdapter ad = new SqlDataAdapter(query, myConnection);

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

        DataSet ds = new DataSet();

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

        ad.Fill(ds, "Categories");

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

        GridView1.DataSource = ds;

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

        GridView1.DataBind();

在VS2005中 GridView導入Excel的兩點小技巧-附源碼
在VS2005中 GridView導入Excel的兩點小技巧-附源碼
在VS2005中 GridView導入Excel的兩點小技巧-附源碼
在VS2005中 GridView導入Excel的兩點小技巧-附源碼

    /// 記憶體分頁

在VS2005中 GridView導入Excel的兩點小技巧-附源碼
在VS2005中 GridView導入Excel的兩點小技巧-附源碼

    /// <param name="sender"></param>

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

    /// <param name="e"></param>

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

    protected void Paging(object sender, GridViewPageEventArgs e)

在VS2005中 GridView導入Excel的兩點小技巧-附源碼
在VS2005中 GridView導入Excel的兩點小技巧-附源碼

        GridView1.PageIndex = e.NewPageIndex;

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

        BindData();

在VS2005中 GridView導入Excel的兩點小技巧-附源碼
在VS2005中 GridView導入Excel的兩點小技巧-附源碼
在VS2005中 GridView導入Excel的兩點小技巧-附源碼

    protected void Button1_Click(object sender, EventArgs e)

在VS2005中 GridView導入Excel的兩點小技巧-附源碼
在VS2005中 GridView導入Excel的兩點小技巧-附源碼

        Response.Clear();

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

        Response.Buffer = true;

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

        Response.Charset = "GB2312";

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

        Response.AppendHeader("Content-Disposition", "attachment;filename=FileName.xls");

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

        //gaoyang [10/21/2006] 經測試如果設定為 GetEncoding("GB2312"),導出的檔案将會出現亂碼。

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

        Response.ContentEncoding = System.Text.Encoding.UTF7;

在VS2005中 GridView導入Excel的兩點小技巧-附源碼
在VS2005中 GridView導入Excel的兩點小技巧-附源碼

        //設定輸出檔案類型為excel檔案。 

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

        Response.ContentType = "application/ms-excel";

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

        System.IO.StringWriter oStringWriter = new System.IO.StringWriter();

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

        System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

        this.GridView1.RenderControl(oHtmlTextWriter);

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

        Response.Output.Write(oStringWriter.ToString());

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

        Response.Flush();

在VS2005中 GridView導入Excel的兩點小技巧-附源碼

        Response.End();

在VS2005中 GridView導入Excel的兩點小技巧-附源碼
在VS2005中 GridView導入Excel的兩點小技巧-附源碼
在VS2005中 GridView導入Excel的兩點小技巧-附源碼

本文轉自

高陽 51CTO部落格,原文連結:http://blog.51cto.com/xiaoyinnet/196546 ,如需轉載請自行聯系原作者

繼續閱讀