CSVHelper - 无输出

时间:2014-06-27 16:33:05

标签: c# csvhelper

我正在尝试使用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.然而,我已经尝试过,它似乎无法正常工作

我也对usingMemoryStreamStreamWriter的{​​{1}}语句做了同样的尝试 我已经尝试了所有这些并且它仍然是空白的

此外,CSVWriter的长度始终为零

我做错了什么?

3 个答案:

答案 0 :(得分:2)

想出来 - 我需要将一个字节数组而不是一个流传递给FileContentResult:

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

当CsvHelper没有输出时,最常见的原因是作者需要public static class ocSAFlags { static private ObservableCollection<flag> oCFlag = getSAFlags(); private static ObservableCollection<flag> getSAFlags() { var x = new ObservableCollection<flag>(); var sa = new SALinqDataContext(); var flags = sa.flags.Where(f => f.available == true) .OrderBy(f => f.flag_desc); foreach (flag f in flags) x.Add(f); return x; } public static ObservableCollection<flag> OCFlag { get { return oCFlag; } } }

使用没有配置的CsvWriter完美地工作

sw.Flush()

通过使用配置CsvWriter(sw); // with no configuration ,我想出了一个空的csv

IgnoreReferences = true

解决方案(完整示例)

CsvWriter(sw, new Configuration.CsvConfiguration() {
    Delimiter = ";", 
    IgnoreReferences = true
});

在Github上找到提示:https://github.com/JoshClose/CsvHelper/issues/47