[英]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.