簡體   English   中英

用戶單擊按鈕后如何從ASP頁下載CSV文件

[英]How to download a CSV file from an ASP page after user clicks a button

我基本上將以下內容放入我的按鈕單擊甚至處理程序中,並且大多數情況下都可以使用,但它也將頁面的所有html都寫到CSV文件中。 有辦法阻止這種情況嗎?

                    StringBuilder sb = new StringBuilder();
                sb.AppendLine("pkey,epsn,Cal. Date (UTC),Va Mult, Vb Mult, Vc Mult,Ia Mult, Ib Mult, Ic Mult, Ia Phase, Ib Phase, Ic Phase, CT Rating, CT Type, Cal By");
                Response.ContentType = "application/csv";

                Response.AddHeader("content-disposition", "attachment; filename=EPSn.csv");
                Response.Write(sb.ToString());
                foreach (DataRow row in dt.Rows)
                {
                    sb = new StringBuilder((string)row[0]);
                    for (int i = 1; i < dt.Columns.Count; i++)
                    {
                        if (row[i] is DBNull)
                            sb.Append(",NULL");
                        else if (i == 2)
                            sb.Append("," + new DateTime((long)row[i]).ToString("G"));
                        else
                            sb.Append("," + row[i].ToString());

                    }
                    sb.AppendLine();
                    Response.Write(sb.ToString());

在開始編寫響應之前,請添加。

Response.Clear();

在代碼末尾添加以下內容。

Response.Flush();
Response.End();

贊揚以下有關結束響應的最佳方法的問題。

HttpResponse.End與HttpResponse.Close與HttpResponse.SuppressContent

我認為您還應該在此代碼后添加Response.End():這樣就不再向響應流添加任何響應。 那可能是將頁面輸出添加到CSV中。

sb.AppendLine();
Response.Write(sb.ToString());

Response.End();

有辦法阻止這種情況嗎?

您可以清除響應:

Response.Clear();
Response.ClearContent();

另外,請停止滾動自己的CSV解析器 絕對可怕,我看到人們繼續一遍又一遍地犯這個錯誤。

我不知道您是否要避免使用excel,但是此代碼段在我的代碼中有效:

    void InitAttachment()
    {
        string attachment = "attachment; filename= " + this.FileName;
        Response.ClearContent();
        Response.AddHeader("content-disposition", attachment);
        Response.ContentType = "application/excel";
    }

暫無
暫無

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

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