代码之家  ›  专栏  ›  技术社区  ›  Eric Obermuller

使用csv助手从类中写入单个记录

  •  0
  • Eric Obermuller  · 技术社区  · 6 年前

    我正在使用位于的库csv帮助程序 https://joshclose.github.io/CsvHelper/ 尝试编写一个将为我导出类的函数。下面是我的示例类:

     public class Z1000
    {
        public string ModelNumber { get; set; }
        public string SerialNumber { get; set; }
        private string InputVolts { get; set; }
        private string InputHz { get; set; }
        private string InputPhase { get; set; }
        private string InputAmps { get; set; }
        private string OutputVolts { get; set; }
        private string OutputHz { get; set; }
        private string OutputPhase { get; set; }
        private string OutputAmps { get; set; }
        private string Type { get; set; }
        private string WiringDiagram { get; set; }
        private string SCCR { get; set; }
        private string FLA { get; set; }
        private bool SuitableForUseAsServiceEquipment { get; set; } = false;
        private List<string> InstanceManuals { get; set; } = new List<string>();
        private List<string> Options { get; set; } = new List<string>();
        private List<Fuse> Fuses { get; set; } = new List<Fuse>();              
      }
    

    这个类也有几个函数,我排除了它们,因为它们对问题不重要。下面是我试图用来导出单个记录的函数。

    public void ExportToCsv<T>(T classToExport)
        {
            using (StreamWriter writer = new StreamWriter(@"C:\Data\Output.csv"))
            {
                var csv = new CsvWriter(writer);
                csv.WriteHeader(typeof(T));
                csv.WriteRecord(classToExport);
            }
        }
    

    代码执行得很好,但由于某些原因,导出的csv文件只是空的。我是不是漏了一步?我试过好几种不同的方法,但似乎无法锁定它。我阅读了写作的文档和他们的例子,但似乎没有一个对我有用。我是不是完全错过了什么?

    编辑: 我设置了一个断点并验证了正在写入的公共成员数据。 enter image description here

    1 回复  |  直到 6 年前
        1
  •  1
  •   STLDev    6 年前

    似乎此库要求您在输出记录后刷新该记录。

    从github站点: https://joshclose.github.io/CsvHelper/writing

    结束这一行

    写完行后,需要刷新字段并 开始新的一行。刷新和开始新的行是分开的,以便 您可以刷新而不创建新行。打电话 NextRecord() 将 为你冲水。