我正在生成一个CSV文件并尝试使用MVC将其发送到网上,但我一直收到Illegal characters in path
例外。
我尝试过使用不同的方法,例如引用列,将\ n更改为Environment.NewLine
,但问题的原因仍然无法解决。
控制器代码:
string csv = "";
csv = "Name, Sales, Qty, Cost, Profit" + "\n";
foreach (var item in model.ReportResults.Items) {
csv += item.ToCsv();
}
return File(csv, "text/csv", "myfile.csv");
ToCsv方法:
internal string ToCsv()
{
return "" + Name + "" + "," + Sales.ToString() + "," + Qty.ToString() + "," + Cost.ToString() + "," + Profit.ToString() + "\n";
}
生成的CSV文件的快照:
Name, Sales, Qty, Cost, Profit
Tyranids,4979.29,182,3375.00,1604.29
Space Marines,2127.88,87,948.09,1179.79
Tau Empire,1584.01,40,0.00,1584.01
Eldar,1164.04,44,925.38,238.66
Imperial Guard,1005.79,34,790.10,215.69
答案 0 :(得分:10)
您正在使用File()
的错误重载。 csv
是一个字符串which tells it that you're looking for a file by that name。当然,您的整个CSV数据都不是有效的文件名,因此是错误。
您希望返回byte[]
作为“文件”的实际内存数据,而不是字符串。也许是这样的:
var csvBytes = Encoding.ASCII.GetBytes(csv);
return File(csvBytes, "text/csv", "myfile.csv");
(或者您想要使用的任何字符编码。)