0

Web サイトで ASPX を表示すると、セルにテキストがほとんどない表が表示されます。

tab.Rows[1].Cells[1].innerHtml = "Booked :"

(多くの行とセルにありますが、各セルに異なるテキストがあります)

ボタンをクリックするだけで、テーブル内のデータが Excel ファイルにダウンロードされます。

テーブル ID : タブ

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        //Table tbl = new Table();
        TableRow tr = new TableRow();
        TableCell tcel = new TableCell();
        tcel.Text = "id";
        tr.Cells.Add(tcel);

        TableCell tcel1 = new TableCell();
        tcel1.Text = "id1";
        tr.Cells.Add(tcel1);

        tab.Rows.Add(tr);
    }
}
protected void Button1_Click(object sender, EventArgs e)
{
    string filename = "ExportExcel.xls";
    System.IO.StringWriter tw = new System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);

    //DataGrid dgGrid = new DataGrid();
    //dgGrid.DataSource = tbl;
    //dgGrid.DataBind();

    //Get the HTML for the control.             
    tab.RenderControl(hw);
    //Write the HTML back to the browser.
    //Response.ContentType = application/vnd.ms-excel;
    Response.ContentType = "application/vnd.ms-excel";
    Response.AppendHeader("Content-Disposition", "attachment; filename=" + filename + "");
    this.EnableViewState = false;
    Response.Write(tw.ToString());
    Response.End();
}

ワトラプリオンの回答で変更されましたが、まだ回答がありません.. エラー:

DataTable dt = dt; //Use of unassigned local variable 'dt'
4

2 に答える 2

0

最初に、これはExcelにエクスポートすることではありませんが、間違ったヘッダーを含むhtmlを送信して、ブラウザをだましてExcelでこのコンテンツを開くようにします。

このソリューションには多くの問題があります.htmlを送信し、応答ヘッダーがこれがExcelファイルであると言っているため、Excel自体がコンテンツが拡張子と異なることをユーザーに警告します. また、ヘッダーで宣言されているものとは異なるコンテンツを提供することはマルウェアの既知の動作であるため、クライアント上のマルウェア対策ソフトウェアまたはサーバー上の同様のソフトウェアがこの応答をブロックすることは間違いありません。

EPPlusなどの専用の Excel ライブラリを使用する方がはるかに優れて簡単です。 DataTable を実際の Excel ファイルにエクスポートする ASP.NET ashx ハンドラーについては、こちらを参照してください。

https://stackoverflow.com/a/9569827/351383

于 2013-05-21T09:57:46.200 に答える