C# Linq到CSV:将数据转换为.CSV文件,并从操作返回文件,而不将文件保存在服务器上
我正在和这个转换我的数据到一个可下载的csv文件 我做了什么: 我创建了如下所示的操作:C# Linq到CSV:将数据转换为.CSV文件,并从操作返回文件,而不将文件保存在服务器上,c#,asp.net-mvc,linq,csv,linqtocsv,C#,Asp.net Mvc,Linq,Csv,Linqtocsv,我正在和这个转换我的数据到一个可下载的csv文件 我做了什么: 我创建了如下所示的操作: public FileResult GetReportCsvData(MyFilterModel model) { var data = _myService.GetMyData(model); var fileName = String.Format("{0}_{1}_{2:yyyy_MMM_d}", Helpers.GetLoggedInUserName(), &q
public FileResult GetReportCsvData(MyFilterModel model)
{
var data = _myService.GetMyData(model);
var fileName = String.Format("{0}_{1}_{2:yyyy_MMM_d}", Helpers.GetLoggedInUserName(), "Ad-Reports", DateTime.Today) + ".csv";
var outputFileDescription = new CsvFileDescription { SeparatorChar = ',', FirstLineHasColumnNames = true };
var cc = new CsvContext();
cc.Write(data, "c:/" + fileName, outputFileDescription);
return File("c:/" + fileName, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);
}
使用以下jquery,我得到了我的csv文件:
exportCsv: function () {
var data = this.getFilters();
var url = '/MyController/GetReportCsvData';
var form = document.createElement('form');
form.action = url;
form.method = 'POST';
form.style.display = 'none';
for (i in data) {
if (data[i] != "") {
var inputElement = document.createElement('textarea');
inputElement.name = i;
inputElement.value = data[i];
form.appendChild(inputElement);
}
}
document.body.appendChild(form);
form.submit();
}
这是可行的,我在下载提示下得到了csv文件
我想要什么
这里使用当前代码,我必须将文件保存在我的服务器上(C:/filename),然后返回其文件对象
我不想把它保存在我的服务器上
要实现这一点,我需要做哪些更改?在“cc.Write”中,如果要写入磁盘,outputFileDescription已经是一个文本流。因此,与其先将其保存到磁盘,然后用“File”从磁盘读取,不如在您写入磁盘的“cc.Write”上返回TextStream,outputFileDescription已经是一个TextStream。因此,与其先将其保存到磁盘,然后用“文件”从磁盘读取,不如返回文本流@Kodefoo为什么?谷歌可以提供10万个例子来说明如何读取文本流,而不必先将文本流保存到磁盘,然后再从磁盘读取文本流?那么,添加到您的答案中并使其对其他通过谷歌搜索最终到达这里的人更有帮助,对您来说应该没有问题。@Kodefoo为什么?谷歌可以提供10万个关于如何读取文本流的例子,而不必先将其保存到磁盘,然后再从磁盘读取?那么,添加到您的答案中并使其对其他通过谷歌搜索最终到达这里的人更有帮助,对您来说应该没有问题。