C#HttpResponse未写入CSV文件

时间:2017-11-06 07:10:19

标签: c# csv httpresponse

我有一个表单会在用户点击按钮时返回csv file。为了返回文件,我创建了一个名为StringBuilder的{​​{1}}并将所有响应连接到sb(需要提及的是我的字符串是阿拉伯字符,所以我需要将它们编码为UTF8字符)。然后我尝试像这样返回我的csv文件:

sb

sb已正确填充,但输出文件仍为空。我将感激你的帮助。任何人都可以帮助我吗?

我已经使用了所有提议的方法(12),但它仍然是空的。重点是,当我将字符串写入XML文件时,一切正常,但是当涉及到CSV时,它无法正常工作。那让我疯了。我不知道问题是什么。我忘了写任何东西吗?

2 个答案:

答案 0 :(得分:0)

尝试在两行以下评论,如果有帮助的话

Response.Charset = "";
Response.ContentEncoding = Encoding.UTF8;

答案 1 :(得分:-1)

我已经尝试了很多来解决这个问题。由于我花了很多时间来找到问题,我会发布答案,也许可以节省其他人的时间。 问题是我构建sb的方式。我必须使用添加格式为CSV文件构建它。以下对我有用:

DataTable dt = auc.GetTradesByDate().Tables[0];
/**************************************************************/
StringBuilder sb = new StringBuilder();

sb.AppendFormat("{0},{1},{2},{3},{4}"
                , "date", "symbol", "symbolName", "buyerId","buyerName\n");
foreach (DataRow dr in dt.Rows)
{
    sb.AppendFormat("{0},", dr["date"]);
    sb.AppendFormat("{0},", dr["symbol"]);
    sb.AppendFormat("{0},", dr["symbolName"]);
    sb.AppendFormat("{0},", dr["buyerId"]);
    sb.AppendFormat("{0}", dr["buyerName"]);
    sb.AppendFormat("\n");
}

string CsvHeader = "";
Response.Clear();
Response.ContentType = "text/csv";
Response.Buffer = true;
Response.AddHeader("content-disposition", string.Format("attachment;filename=trades_{0:yyyy-MM-dd}.csv", DateTime.Now));
Response.Write(CsvHeader + sb.ToString());
Response.End();