.NET Core - StringBuilder - 下载文件中缺少字符
.NET Core - StringBuilder - missing character in downloaded file
我将一些数据导出到 angular/.NET Core 应用程序上的 csv
一个;在第一个 csv 字段之后缺少 ,而另一个;有吗
其他字段使用的说明相同
StringBuilder sb = new StringBuilder();
sb.Append("Id; Civility;Name; Email; Phone;");
sb.Append("\r\n");
for (int i = 0; i < partners.Count; i++)
{
Partner p = partners[i];
sb.Append('"' + p.Id + '"' + ';');
sb.Append('"' +(p.Manager.Civility==0?"Mr":"Mme") +'"'+ ';');
sb.Append('"' + p.Manager.FirstName+" "+ p.Manager.LastName + '"' + ';');
...
这是将其发送到 Web 客户端以供下载的部分
DateTime localDate = DateTime.Now;
var date = localDate.ToString("MM_dd_yy_HH_mm_ss");
var filename = "Partners_" + date + ".csv";
Response.Headers.Add("x-file-name", filename);
Response.Headers.Add("Access-Control-Expose-Headers", "x-file-name");
return File(Encoding.UTF8.GetBytes(sb.ToString()), "text/csv", filename);
- 为什么是;数据中缺失 ?
- 显然 id 字段的引号也丢失了
感谢您抽出宝贵时间参与此
发生这种情况是因为将 int
与 char
相加得到 int
作为结果。
var x = 'a' + 5;
//yields 102 as 'a' is implicitly cast from char to int, where 'a' holds the value of 97
您可以通过使用 ToString()
将 int
转换为字符串来修复它,或者您可以使用字符串而不是字符,例如
sb.Append("\"" + p.Id + "\";"); //the " is escaped using \
我将一些数据导出到 angular/.NET Core 应用程序上的 csv
一个;在第一个 csv 字段之后缺少 ,而另一个;有吗
其他字段使用的说明相同
StringBuilder sb = new StringBuilder();
sb.Append("Id; Civility;Name; Email; Phone;");
sb.Append("\r\n");
for (int i = 0; i < partners.Count; i++)
{
Partner p = partners[i];
sb.Append('"' + p.Id + '"' + ';');
sb.Append('"' +(p.Manager.Civility==0?"Mr":"Mme") +'"'+ ';');
sb.Append('"' + p.Manager.FirstName+" "+ p.Manager.LastName + '"' + ';');
...
这是将其发送到 Web 客户端以供下载的部分
DateTime localDate = DateTime.Now;
var date = localDate.ToString("MM_dd_yy_HH_mm_ss");
var filename = "Partners_" + date + ".csv";
Response.Headers.Add("x-file-name", filename);
Response.Headers.Add("Access-Control-Expose-Headers", "x-file-name");
return File(Encoding.UTF8.GetBytes(sb.ToString()), "text/csv", filename);
- 为什么是;数据中缺失 ?
- 显然 id 字段的引号也丢失了
感谢您抽出宝贵时间参与此
发生这种情况是因为将 int
与 char
相加得到 int
作为结果。
var x = 'a' + 5;
//yields 102 as 'a' is implicitly cast from char to int, where 'a' holds the value of 97
您可以通过使用 ToString()
将 int
转换为字符串来修复它,或者您可以使用字符串而不是字符,例如
sb.Append("\"" + p.Id + "\";"); //the " is escaped using \