我正在从数据库中获取csv格式的数据,即http://iapp250.dev.sx.com:5011/a.csv?select[>date]from employee
但是表中的一些列包含逗号和双引号,在读取csv之后,它变成了逗号分隔的string.As,当我反序列化它时,我得到了索引越界异常。
在阅读了一些帖子后,我决定使用Lumenworks csv阅读器。我继续使用下面的方法,但仍然无法修复it.Please。找到以下代码片段。
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,它是一个单独的列值,现在是逗号分隔的,因为我的序列化失败。
发布于 2015-09-22 02:26:49
这似乎是您设置查询结果格式的方式存在问题。如果您希望CSV阅读器将"ROBERTS,K“作为单个字段读取,则需要在CSV阅读器的输入中使用引号将"ROBERTS,K”括起来。LumenWorks只是在做它应该做的事情。
同样,如果需要在解析的字段中使用文字双引号,则需要使用另一个双引号对其进行转义。因此,要正确地将其表示为单个字段:
Roberts, K is 6" taller than I am
...您需要将此代码传递给CSV解析器:
"Roberts, K is 6"" taller than I am"
https://stackoverflow.com/questions/32701906
复制相似问题