Space 在 CSV 文件中被检测为逗号
Space in CSV file detected as comma
我尝试生成包含 4 列的 CSV 文件。
此列之一是名称,其中包含用 space 分隔的名字和姓氏。
当我将此文本数据写入 .csv
文件时,它检测到 space 为逗号并添加额外的列。示例:
Name - First LastName
转换为:
Name | AdditionalColumn
First | LastName
但应该只是
Name |
First LastName |
要生成文件,我使用下一个方法:
public string Export(bool includeHeaderLine = true)
{
var sb = new StringBuilder();
//Get properties using reflection.
IList<PropertyInfo> propertyInfos = typeof(T).GetProperties();
if (includeHeaderLine)
{
//add header line.
foreach (PropertyInfo propertyInfo in propertyInfos)
{
sb.Append(propertyInfo.Name).Append(",");
}
sb.Remove(sb.Length - 1, 1).AppendLine();
}
//add value for each property.
foreach (T obj in _objects)
{
foreach (PropertyInfo propertyInfo in propertyInfos)
{
sb.Append(MakeValueCsvFriendly(propertyInfo.GetValue(obj, null))).Append(",");
}
sb.Remove(sb.Length - 1, 1).AppendLine();
}
return sb.ToString();
}
首先,如何检查创建的CSV?
如果你打开它 Excell,首先尝试修改 MakeValueCsvFriendly(object value) 并用空格引用值:
...
if (output.Contains(",") || output.Contains("\"") || output.Contains(" "))
output = '"' + output.Replace("\"", "\"\"") + '"';
...
如果您使用 header 导出 CSV,另外,在记事本中检查生成的 CSV,"Name" 后是否有双逗号。
我尝试生成包含 4 列的 CSV 文件。 此列之一是名称,其中包含用 space 分隔的名字和姓氏。
当我将此文本数据写入 .csv
文件时,它检测到 space 为逗号并添加额外的列。示例:
Name - First LastName
转换为:
Name | AdditionalColumn
First | LastName
但应该只是
Name |
First LastName |
要生成文件,我使用下一个方法:
public string Export(bool includeHeaderLine = true)
{
var sb = new StringBuilder();
//Get properties using reflection.
IList<PropertyInfo> propertyInfos = typeof(T).GetProperties();
if (includeHeaderLine)
{
//add header line.
foreach (PropertyInfo propertyInfo in propertyInfos)
{
sb.Append(propertyInfo.Name).Append(",");
}
sb.Remove(sb.Length - 1, 1).AppendLine();
}
//add value for each property.
foreach (T obj in _objects)
{
foreach (PropertyInfo propertyInfo in propertyInfos)
{
sb.Append(MakeValueCsvFriendly(propertyInfo.GetValue(obj, null))).Append(",");
}
sb.Remove(sb.Length - 1, 1).AppendLine();
}
return sb.ToString();
}
首先,如何检查创建的CSV? 如果你打开它 Excell,首先尝试修改 MakeValueCsvFriendly(object value) 并用空格引用值:
...
if (output.Contains(",") || output.Contains("\"") || output.Contains(" "))
output = '"' + output.Replace("\"", "\"\"") + '"';
...
如果您使用 header 导出 CSV,另外,在记事本中检查生成的 CSV,"Name" 后是否有双逗号。