3

グリッドビュー データを Excel にエクスポートするために次のコードを使用していますが、問題はページ全体を Excel にエクスポートすることです。ページ全体のエクスポートではなく、グリッドビュー データのみが必要です。この問題をどのように解決できますか?

HtmlForm form = new HtmlForm();
Response.Clear();
Response.Buffer = true;
string filename = "GridViewExport_" + DateTime.Now.ToString() + ".xls";

Response.AddHeader("content-disposition", "attachment;filename=" + filename);
Response.Charset = "";
Response.ContentType = "application/vnd.ms-excel";
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
gdvInBox.AllowPaging = false;
gdvInBox.DataBind();
form.Controls.Add(gdvInBox);
this.Controls.Add(form);
form.RenderControl(hw);

//style to format numbers to string
string style = @"<style> .textmode { mso-number-format:\@; } </style>";
Response.Write(style);
Response.Output.Write(sw.ToString());
Response.Flush();
Response.End();

前もって感謝します。

4

2 に答える 2

7

グリッドビューのみをエクスポートする Excel エクスポートを設定するのは非常に簡単です。これはテスト済みで、特定の Web ページに表示されるグリッドビューのみをエクスポートします。

C# コードでは、次を使用します。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class vxcel_export : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }

    protected void Button2_Click(object sender, EventArgs e)
    {
        Response.Clear();
        Response.AddHeader("content-disposition", "attachment;filename=file-name.xls");
        Response.ContentType = "application/vnd.xlsx";
        System.IO.StringWriter stringWrite = new System.IO.StringWriter();
        System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
        GridView1.RenderControl(htmlWrite);
        Response.Write(stringWrite.ToString());
        Response.End();
    }    

    public override void VerifyRenderingInServerForm(Control control)
    {
    }
}

aspx コードでは、次を使用します。

ページ上部のコードに必ず追加EnableEventValidation="false"してください。<%@Page %>

グリッドビューを Excel にエクスポートするボタンを配置する場所に次のコードを配置します。

<asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="Whatever you want your button to say" />

高さと幅は、ボタンの任意のサイズに変更できます。

それでおしまい。ファイルをエクスポートする場合、ワークブック/Excel ファイルとして保存するまでは、実際の Excel ファイルではないことに注意してください。

于 2013-08-06T21:15:24.280 に答える
0

これを機能させるには、次のコードをページに適用する必要もありました。

public override void VerifyRenderingInServerForm(Control control)
{
  /* Confirms that an HtmlForm control is rendered for the specified ASP.NET
     server control at run time. */
}

ここで解決策を見つけました-> GridViewがフォームタグ内にある後でも、GridViewは runat="server" を使用してフォームタグ内に配置する必要があります

于 2014-02-27T14:59:44.350 に答える