【问题标题】:CSVHelper - No OutputCSVHelper - 无输出
【发布时间】:2014-06-27 16:33:04
【问题描述】:

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

我也对MemoryStreamStreamWriterCSVWriterusing 语句进行了同样的尝试 这些我都试过了,还是空白

更重要的是,MemoryStream 的长度始终为零

我做错了什么?

【问题讨论】:

  • 你的代码甚至没有编译... ?
  • 假设您没有引用 csvhelper dll 或没有 mvc 引用

标签: c# csvhelper


【解决方案1】:

想通了 - 我需要将字节数组而不是流传递给 FileContentResult :

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

【讨论】:

  • 如果它的流或 ToArray 转换与 CsvWriter 没有直接关系 - 在某些情况下,我注意到 CsvWriter 为零(空)
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    当 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");
    

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

    【讨论】:

      猜你喜欢
      • 2014-03-07
      • 2020-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-19
      相关资源
      最近更新 更多