为什么 Excel 将双空格视为逗号?

Why does Excel treat double spaces as a comma?

我在 vb.net 应用程序中编写了一个 CSV 文件导出,然后将其导出到 Outlook。

我遇到的问题是,在写入 CSV 文件时,我的代码正在检查当前字段中的逗号,但在执行此操作时,它也会错误地输入双 space逗号,或 space 后跟 'Enter' 键(对于多行文本框)

例如,如果在客户的注释部分中有 4 行文本,其中一行以 space 结尾 - 用户然后按 Enter 键转到下一行,但是该程序正在获取下一行文本并为其创建一个新记录,因为它认为这是一个逗号...

这是什么原因?这意味着数据必须经过超级验证(即检查没有双重 spaces 等)才能导出,这太耗时了。

希望这是有道理的!

这是代码:

Dim result As Boolean = True

Try
   Dim sb As New StringBuilder()
   Dim separator As String = ","
   Dim group As String = """"
   Dim newLine As String = Environment.NewLine

   For Each column As DataColumn In dtable.Columns
      sb.Append(wrapValue(column.ColumnName, group, separator) & separator)
   Next

   sb.Append(newLine)

For Each row As DataRow In dtable.Rows
   For Each col As DataColumn In dtable.Columns
        sb.Append(wrapValue(row(col).ToString(), group, separator) & separator)
    Next

     sb.Append(newLine)
Next

wrapValue 的代码

Function wrapValue(value As String, group As String, separator As String) As String

    If value.Contains(separator) Then

        If value.Contains(group) Then
            value = value.Replace(group, group + group)
        End If

        value = group & value & group

    End If

    Return value

End Function

基于它缩短了 430 行这一事实,我认为这与您在 value 变量前后添加了一个 "" 负载有关。

如果它在开始时删除一个值,那么它会在第一列之前删除一个 " header。至于为什么要像你在评论中提到的那样导入一条记录,我并不完全当然,我建议问题出在您的 wrapValue 代码中。

你能试试改变吗

value = group & value & group

value = value

看看这是否改变了什么?