如何使用具有不同 headers 的多个记录类型的 Filehelpers 附加到 CSV 文件?

How do I append to a CSV file using Filehelpers with multiple record types that have distinct headers?

如问题所述,我试图使用 FileHelpers 库生成一个 CSV 文件和一个报告文件。报告文件可能具有不同的(但有限的)inputs/data 结构,因此我的 CSV 生成方法未明确键入。 CSV 包含所有报告数据以及报告的 header 信息。对于我的 header,我使用 class object 属性,因为它们的描述性足以满足我的最终使用目的。

我的相关代码片段如下:

            // 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 已成功生成,但 .AppendToFile() 方法不会添加 reportDataEngine.HeaderText。从文档中我没有看到 .AppendToFile() 的这个功能,我想知道是否有人对此有已知的 work-around 或者关于如何输出两个不同 [=33= 的 header 的建议] objects 在单个 CSV 文件中使用 FileHelpers。

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

Report_Name Operator Timestamp
Access Report User1 14:50:12 28 Dec 2020
UserID Login_Time Logout_Time
User4 09:33:23 10:45:34
User2 11:32:11 11:44:11
User4 15:14:22 16:31:09
User1 18:55:32 19:10:10

我还查看了 FileHelpers 中的 MultiRecordEngine,虽然我认为这可能有帮助,但我无法根据示例弄清楚如何以我上面所需的方式实际编写多记录 CSV 文件;如果可能的话。

谢谢!

最好的方法是合并列并做一个大 table 然后让你的 类 匹配你需要在阅读时将它们分开的列。 CSV 仅允许第一行定义列名,并且根据您的用例这是可选的。看看 CSVHelper https://joshclose.github.io/CsvHelper/ 它有很多内置功能和很多示例。如果您需要其他帮助,请告诉我。