CSV解析器,如何自动发现列名和类型

时间:2018-10-23 21:06:20

标签: csv reflection filehelpers csvhelper

我正在加载CVS文件以进行数据导入。这些文件来自各种来源,因此标头名称和位置经常在变化。我搜索并发现有用的库,例如CsvHelper & FileHelpers

问题:使用FileHelper.net或CsvHelper,我们如何提取标头名称和Column datatype,以便我可以创建下拉菜单对于每个列,在.NET类型<==>与SQL类型之间映射

1 个答案:

答案 0 :(得分:1)

只需使用

读入文件的第一行
string headers = File.ReadLines("MyFile.txt").First();

然后使用class builder构建所需的任何CSV规范。

DelimitedClassBuilder cb = new DelimitedClassBuilder("MyProduct", delimiter: ",");

cb.AddField("Name", typeof(string));
cb.LastField.TrimMode = TrimMode.Both;

cb.AddField("Description", typeof(string));
cb.LastField.FieldQuoted = true;
cb.LastField.QuoteChar = '"';
cb.LastField.QuoteMode = QuoteMode.OptionalForBoth;

// etc... e.g., add a date field
cb.AddField("SomeDate", typeof(DateTime));

engine = new FileHelperEngine(cb.CreateRecordClass());

DataTable dt = engine.ReadFileAsDT("test.txt");