簡體   English   中英

如何使用ASP.NET C#將HTML表格下載到Excel文件中

[英]How to download an Html table into excel file using asp.net C#

我有這樣的HTML表格:

<table cellpadding="0" cellspacing="0" border="0" class="Messages" id="idTbl" runat="server">
    <tr>
        <th>date</th>
        <th>Subject</th>
    </tr>
    <tr class="myHot_smsMessages_new">
        <td>01/01/2014</td>
        <td>Some Subject No 1</td>
    </tr>
    <tr class="myHot_smsMessages_new">
        <td>10/12/2013</td>
        <td>Some subject no 2</td>
    </tr>                    
</table>

在服務器端:

protected void ExportToXLS(object sender, EventArgs e)
{
    Response.ContentType = "application/x-msexcel";
    Response.AddHeader("Content-Disposition", "attachment; filename=ExcelFile.xls"); Response.ContentEncoding = Encoding.UTF8;
    StringWriter tw = new StringWriter(); HtmlTextWriter hw = new HtmlTextWriter(tw); idTbl.RenderControl(hw);
    Response.Write(tw.ToString());
    Response.End();
}

有任何想法嗎?

static StringBuilder StrBuilder = new StringBuilder();


        protected void lnkExcel_Clicked(object sender, EventArgs e)
        {
            //ExportGrid.ExportExcel(griditem);
            ConfigureEmployeeExport();

            HttpContext.Current.Response.Clear();
            HttpContext.Current.Response.Charset = "";
            HttpContext.Current.Response.ContentType = "application/msexcel";
            HttpContext.Current.Response.AddHeader("Content-Disposition", "filename=ExcelFile.xls");
            HttpContext.Current.Response.Write(StrBuilder);
            HttpContext.Current.Response.End();
            HttpContext.Current.Response.Flush();
        }




public void ConfigureEmployeeExport()
{
    StrBuilder.Append("<table cellpadding='0' cellspacing='0' border='0' class='Messages' id='idTbl' runat='server'><tr><th>date</th><th>Subject</th></tr><tr class='myHot_smsMessages_new'><td>01/01/2014</td><td>Some Subject No 1</td></tr><tr class='myHot_smsMessages_new'><td>10/12/2013</td><td>Some subject no 2</td></tr></table>");

}

所以我想出了兩個解決方案,第一個解決方案是從頁面重定向到通用處理程序(發送ByteStream),並在處理程序中執行以下建議的類似於user3851829的操作

我所做的是類似的事情,只是我從中繼器中獲取了內容,然后將其呈現到stringBuilder中,如下所示:

protected void ExportToXLS(object sender, EventArgs e)
{
    Response.Clear();
    Response.Buffer = true;
    Response.AddHeader("content-disposition", "attachment;filename=Notifications.xls");
    Response.Charset = "";
    Response.ContentType = "application/vnd.ms-excel";

    using (StringWriter sw = new StringWriter())
    {
        HtmlTextWriter tw = new HtmlTextWriter(sw);

        repeaterID.DataSource = Session["SomeDataFromSession"] as List<SomeObject>;
        repeaterID.DataBind();

        rptNotifications.RenderControl(tw);

        Response.Output.Write(sw.ToString());
        Response.Flush();
        Response.End();
    }
}

這兩個答案都有效!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM