我正在尝试使用CSVHelper nuGet包创建csv文件。
这是密码
public ActionResult Test()
{
var ms = new MemoryStream();
var sr = new StreamWriter(ms);
var csv = new CsvWriter(sr);
csv.WriteField("sd");
csv.WriteField("sd");
csv.WriteField("sd");
csv.WriteField("sd");
//ms.Seek(0, 0);
sr.Flush();
//ms.Position = 0;
var len = ms.Length;
return File(ms, "text/csv", "test.csv");
}但是,该文件始终为空。
我在这里读过几个问题,这些问题表明StreamWriter需要被冲淡。职位移到0。但是,我已经试过了,但这似乎行不通
我也尝试过对using语句进行MemoryStream、StreamWriter和CSVWriter,我已经尝试了所有这些,但仍然是空的。
而且,MemoryStream的长度总是为零
我做错了什么?
发布于 2014-06-30 11:44:19
我想明白了--我需要向FileContentResult传递一个字节数组,而不是流:
return File(ms.ToArray(), "text/csv", "test.csv");发布于 2017-02-03 15:59:37
当CsvHelper没有输出时,最常见的原因是作者需要一个sw.Flush()
在没有配置的情况下使用CsvWriter
CsvWriter(sw); // with no configuration通过使用配置IgnoreReferences = true,我想出了一个空的csv
CsvWriter(sw, new Configuration.CsvConfiguration() {
Delimiter = ";",
IgnoreReferences = true
});解决方案(完整示例)
var ms = new System.IO.MemoryStream();
var sw = new System.IO.StreamWriter(ms);
var csvOut = new CsvWriter(sw, new Configuration.CsvConfiguration() { Delimiter = ";", IgnoreReferences = true });
csvOut.WriteRecords(someCollection);
// IMPORTANT LINE
sw.Flush();
ms.Position = 0;
return File(ms, "text/csv", "resultFile.csv");发布于 2014-06-27 16:50:51
确保在使用WriteField方法writer.NextRecord();将数据写入csv文件时,可以使用下面的代码:
using (var sw = new StreamWriter(@"test.csv"))
{
var writer = new CsvWriter(sw);
writer.WriteField("Fist field");
writer.NextRecord();
writer.WriteField("Second field");
writer.NextRecord();
//add what you wana here
}https://stackoverflow.com/questions/24456734
复制相似问题