C# 如何使用具有不同标题的多个记录类型的FileHelper附加到CSV文件?

C# 如何使用具有不同标题的多个记录类型的FileHelper附加到CSV文件?,c#,csv,filehelpers,C#,Csv,Filehelpers,正如问题所说,使用FileHelpers库,我试图在报告文件旁边生成一个CSV文件。报告文件可能具有不同(但有限)的输入/数据结构,因此我的CSV生成方法没有显式类型化。CSV包含所有报告数据以及报告标题信息。对于我的标题,我使用类对象属性,因为它们对于我的最终用途来说是足够描述性的 下面是我的相关代码片段: // File location, where the .csv goes and gets stored. string filePath

正如问题所说,使用FileHelpers库,我试图在报告文件旁边生成一个CSV文件。报告文件可能具有不同(但有限)的输入/数据结构,因此我的CSV生成方法没有显式类型化。CSV包含所有报告数据以及报告标题信息。对于我的标题,我使用类对象属性,因为它们对于我的最终用途来说是足够描述性的

下面是我的相关代码片段:

            // File location, where the .csv goes and gets stored.
            string filePath = Path.Combine(destPath, fileName);

            // First, write report header details based on header list
            Type type = DetermineListType(headerValues);
            var headerEngine = new FileHelperEngine(type);
            headerEngine.HeaderText = headerEngine.GetFileHeader();
            headerEngine.WriteFile(filePath, (IEnumerable<object>)headerValues);

            // Next, append the report data below the report header data.
            type = DetermineListType(reportData);
            var reportDataEngine = new FileHelperEngine(type);
            reportDataEngine.HeaderText = reportDataEngine.GetFileHeader();
            reportDataEngine.AppendToFile(filePath, (IEnumerable<object>)reportData);
//文件位置,.csv文件存放的位置。
字符串filePath=Path.Combine(destPath,fileName);
//首先,根据表头列表编写报表表头明细
类型类型=DetermineListType(HeaderValue);
var headerEngine=新文件helperEngine(类型);
headerEngine.HeaderText=headerEngine.GetFileHeader();
WriteFile(文件路径,(IEnumerable)头值);
//接下来,将报告数据附加到报告标题数据下面。
类型=DetermineListType(reportData);
var reportDataEngine=new FileHelperEngine(类型);
reportDataEngine.HeaderText=reportDataEngine.GetFileHeader();
AppendToFile(文件路径,(IEnumerable)reportData);
执行此操作时,会成功生成CSV,但是.AppendToFile()方法不会添加reportDataEngine.HeaderText。从文档中我看不到.AppendToFile()的此功能,我想知道是否有人对此有已知的解决方法,或者有人建议如何使用FileHelpers在单个CSV文件中输出两个不同类对象的标题

但是,在单个CSV文件中,所需的输出看起来像这样(这显然是一个连续的CSV;而不是表)

报告名称 操作人员 时间戳 访问报告 用户1 2020年12月28日14:50:12
最好的方法是合并列并生成一个大表,然后使您的类与读取时需要分离的列相匹配。CSV只允许第一行定义列名,这是根据您的用例可选的。看看CSVHelper,它有很多内置功能和很多示例。如果您需要其他帮助,请告诉我。

CSV格式不支持您所需的内容。谢谢您的回复。我转到了CSVHelper图书馆,很成功,但不是按照你建议的方式。在我的例子中,更方便的方法是简单地侧向加载一个方法来读取我需要呈现到列表中的所有标题,并显式地使用WriteField()方法插入这一行并强制CsvWriter到新行。这个方法是肮脏的,但它在我需要的范围内工作。再次感谢!