我正在尝试通过 FileHelpers 动态读取 CSV 并将 CSV 数据作为数据表使用。我的 CSV 文件不会相同。它们将具有不同的列标题和不同数量的列。我正在使用 ReadStreamAsDT 方法,但似乎仍然需要一个结构化类来初始化 FileHelperEngine。有任何想法吗?
我不得不使用FileHelpers.RunTime
和DelimitedClassBuilder
创建一个DataTable
从文件中。这是我的方法。如果我有更多时间,我会更好地解释这一点。
private static DataTable CreateDataTableFromFile(byte[] importFile) {
var cb = new DelimitedClassBuilder("temp", ",") { IgnoreFirstLines = 0, IgnoreEmptyLines = true, Delimiter = "," };
var ms = new MemoryStream(importFile);
var sr = new StreamReader(ms);
var headerArray = sr.ReadLine().Split(',');
foreach (var header in headerArray) {
cb.AddField(header, typeof(string));
cb.LastField.FieldQuoted = true;
cb.LastField.QuoteChar = '"';
}
var engine = new FileHelperEngine(cb.CreateRecordClass());
return engine.ReadStreamAsDT(sr);
}
显然,围绕此方法进行了大量验证以及其他逻辑,但我现在没有太多时间深入研究它。希望这可以帮助!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)