【发布时间】:2020-03-31 00:18:26
【问题描述】:
我正在使用 CSVHelper 来解析 CSV 文件。
我在识别空单元格值或具有某些值(即一个或多个空格)的单元格时遇到了一些问题。
问题是当用户在其单元格中的文件中仅添加一个空格并上传文件时,CSV 帮助程序会修剪该单元格值,以便将该值作为“”传递。
现在,当用户没有向单元格添加任何内容(或类型)时,它也会像“”一样传递。
所以我想要的是: - 不应允许上传 Null。 - 一个单元格中允许有一个或多个空格。
如何使用 CSVHelper 实现此目的。以下是我的示例代码:
using (TextReader fileReader = new StreamReader(file.OpenReadStream()))
{
var configuration = new Configuration
{
HasHeaderRecord = parameter.HasHeader,
Delimiter = parameter.Delimiter.ToString(),
Quote = parameter.Quote
};
using (var csv = new CsvReader(fileReader, configuration))
{
for (int rowIndex = 0; await csv.ReadAsync(); rowIndex++)
{
var record = csv.GetRecord<dynamic>() as IDictionary<string, object>;
string[] row = record?.Select(i => i.Value as string).ToArray();
for (int i = 0; i < row.Length; i++)
{
//process rows
}
}
}
}
以下是 csv 示例:
"1"," ","1"
"2","0"," "
"3","","1"
在上面的 csv 中,第一行第二列有一个空格,应该允许 第三行的第二列为 null,这是不允许的。
我的代码中是否缺少任何内容或任何解决方法?
谢谢
【问题讨论】:
-
您是否尝试过设置 TrimOptions?我不记得默认值是什么(所以也许这不会有什么不同),但是在你的配置块中尝试:“TrimOptions = None”。
-
谢谢刚刚试过但没有用。它仍在修剪单元格值。
-
发生的另一件奇怪的事情是,如果文件有 2 行或更多行,并且第一行有一列有空格,第二行有一列有空格,如果我调试抛出,我只能看到第一行列有一个空格,对于所有其他行,我可以看到空格已被修剪。但是当我在记事本中看到 csv 文件时,我可以看到每个值都有一个空格。