c# – 写入CSV文件并导出?

在C#ASP.net中,有人可以告诉我如何将数组/列表中的条目写入服务器上的CSV文件,然后打开文件?我认为第二部分将是 – Response.Redirect(“http://myserver.com/file.csv”),但不知道如何在服务器上写入该文件。

此外,如果这个页面被许多用户访问,最好是每次生成一个新的CSV文件还是覆盖同一个文件?如果两个用户尝试访问相同的CSV文件等,会有任何读/写/锁定问题吗?

更新:

这可能是一个愚蠢的问题,我在谷歌搜索,但我无法找到一个确定的答案 – 你如何写一个CSV文件到网络服务器并导出它在C#ASP.net?我知道如何生成它,但我想将其保存到www.mysite.com/my.csv然后导出它。

罗姆,你做错了。您不想将文件写入磁盘,以便IIS可以提供​​这些文件。这增加了安全性的影响,并增加了复杂性。您真正需要做的是将CSV直接保存到响应流。

这是场景:用户希望下载csv。用户提交表单,其中包含有关所需csv的详细信息。您准备csv,然后向用户提供一个可以用于构建csv文件并将其写入响应流的aspx页面的URL。用户点击链接。 aspx页面为空白;在页面代码中,您只需将csv写入响应流并结束。

你可以添加以下内容(我相信这是正确的)Load事件:

string attachment = "attachment; filename=MyCsvLol.csv";
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.ClearHeaders();
HttpContext.Current.Response.ClearContent();
HttpContext.Current.Response.AddHeader("content-disposition", attachment);
HttpContext.Current.Response.ContentType = "text/csv";
HttpContext.Current.Response.AddHeader("Pragma", "public");

var sb = new StringBuilder();
foreach(var line in DataToExportToCSV)
  sb.AppendLine(TransformDataLineIntoCsv(line));

HttpContext.Current.Response.Write(sb.ToString());

写入响应流代码ganked from here

http://stackoverflow.com/questions/3777874/write-to-csv-file-and-export-it

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c# – 写入CSV文件并导出?