我尝试生成包含4列的CSV文件。 其中一列是Name,其中包含以空格分隔的名字和姓氏。
当我将此文本数据写入.csv
文件时,它会将空格检测为逗号并添加其他列。示例:
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();
}
答案 0 :(得分:0)
首先,如何检查创建CSV? 如果你打开Excell,首先尝试修改MakeValueCsvFriendly(对象值)并用空格引用值:
...
if (output.Contains(",") || output.Contains("\"") || output.Contains(" "))
output = '"' + output.Replace("\"", "\"\"") + '"';
...
如果您使用标题导出CSV,同时检查记事本中生成的CSV,您是否在“名称”后面有双逗号。