Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# CSVHelper-无输出_C#_Csvhelper - Fatal编程技术网

C# CSVHelper-无输出

C# CSVHelper-无输出,c#,csvhelper,C#,Csvhelper,我正在尝试使用CSVHelpernuGet包创建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"); cs

我正在尝试使用
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。然而,我试过了,它似乎不起作用

对于
内存流
流编写器
CSVWriter
我已经尝试了所有这些,它仍然是空白

此外,
MemoryStream
的长度始终为零


我做错了什么?

确保在使用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
        }

解决了-我需要向FileContentResult传递字节数组,而不是流:

return File(ms.ToArray(), "text/csv", "test.csv");

当NVER CsvHelper没有输出时,最常见的原因是写入程序需要一个
sw.Flush()

在没有配置的情况下使用CsvWriter可以很好地工作

CsvWriter(sw); // with no configuration
通过使用配置
IgnoreReferences=true
我得到了一个空的csv

CsvWriter(sw, new Configuration.CsvConfiguration() {
    Delimiter = ";", 
    IgnoreReferences = true
});
解决方案(完整示例)


在Github上找到提示:

您的代码甚至没有编译?假设您没有引用csvhelper dll,或者没有mvc引用,如果其流或到阵列转换与CsvWriter没有直接关系-在某些情况下,我注意到CsvWriter为零(空)
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");