我有一个表单会在用户点击按钮时返回csv file
。为了返回文件,我创建了一个名为StringBuilder
的{{1}}并将所有响应连接到sb
(需要提及的是我的字符串是阿拉伯字符,所以我需要将它们编码为UTF8字符)。然后我尝试像这样返回我的csv文件:
sb
sb已正确填充,但输出文件仍为空。我将感激你的帮助。任何人都可以帮助我吗?
我已经使用了所有提议的方法(1和2),但它仍然是空的。重点是,当我将字符串写入XML文件时,一切正常,但是当涉及到CSV时,它无法正常工作。那让我疯了。我不知道问题是什么。我忘了写任何东西吗?
答案 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();