为什么 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
看看这是否改变了什么?
我在 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
看看这是否改变了什么?