【发布时间】:2015-09-21 18:09:57
【问题描述】:
我正在从 csv 格式的数据库中获取数据。即http://iapp250.dev.sx.com:5011/a.csv?select[>date]from employee
但是表中的某些列包含逗号和双引号,并且在读取 csv 后它变成了逗号分隔的字符串。因此,当我反序列化它时,我得到了索引超出范围的异常。
我在阅读了一些帖子后决定使用 Lumenworks csv reader。我按照以下方式进行但仍然无法修复它。请找到以下代码 sn-p。
List<List<string>> LineFields = new List<List<string>>();
using(var reader = new StreamReader(siteminderresponse.getResponseStream())
{
Char quotingCharacter = '\0';
Char escapeCharacter = quotingCharacter;
Char delimiter = '|';
using (var csv = new CsvReader(reader, true, delimiter, quotingCharacter, escapeCharacter, '\0', ValueTrimmingOptions.All))
{
csv.DefaultParseErrorAction = ParseErrorAction.ThrowException;
//csv.ParseError += csv_ParseError;
csv.SkipEmptyLines = true;
while (csv.ReadNextRecord())
{
List<string> fields = new List<string>(csv.FieldCount);
for (int i = 0; i < csv.FieldCount; i++)
{
try
{
string field = csv[i];
fields.Add(field.Trim('"'));
} catch (MalformedCsvException ex)
{
throw;
}
}
LineFields Add(fields);
}
}
}
最终结果是我得到逗号分隔的字段,例如
1,16:00:01,BUY,-2,***ROBERTS, K***.
请查看 ROBERTS, K,它是单列值,现在用逗号分隔,因此我的序列化失败。
【问题讨论】:
标签: c# csv lumenworks