ReadStreamAsDT - Filehelpers и C# - Как мне динамически читать в CSV, используя filehelpers?
Я пытаюсь читать в CSV динамически через FileHelpers и работать с данными CSV в качестве данных. Мои CSV-файлы не будут такими же. Они будут иметь разные заголовки столбцов и различное количество столбцов. Я использую метод ReadStreamAsDT, но он все еще хочет, чтобы структурированный класс инициализировал FileHelperEngine. Есть идеи?
2 ответа
Я должен был использовать 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);
}
Очевидно, что есть много подтверждений наряду с другой логикой, происходящей вокруг этого метода, но у меня сейчас нет времени, чтобы погрузиться в него. Надеюсь это поможет!
Вы пытались использовать http://www.codeproject.com/KB/database/CsvReader.aspx? Вы можете использовать разбор этой библиотеки. Это быстро и надежно.