Я написал экспорт в CSV-файл в приложении vb.net, а затем экспортировал его в Outlook.Почему Excel обрабатывает двойные пробелы как запятую?
Проблема, которую я получил, заключается в том, что когда файл CSV записывается, мой код проверяет запятую в текущем поле, но при этом он также ошибочно делает двойное пространство для запятой или пробелом с последующим нажатием клавиши «Ввод» (для многострочных текстовых полей)
Пример может быть, если в разделе примечаний клиента имеется 4 строки текста, а один заканчивается пробелом - пользователь затем нажал кнопку ввода чтобы перейти к следующей строке, однако программа принимает следующую строку текста и создает для нее новую запись, поскольку она считает запятой ...
В чем причина этого? Это означает, что данные должны быть супер-проверены (т. Е. Проверять отсутствие двойных пробелов и т. Д.), Прежде чем их можно будет экспортировать, что слишком много времени.
Надеюсь, это имеет смысл!
Это код:
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
Если вы не проверяете значение 'If value.Contains (separator) Then' в' wrapValue' (т. Е. Заключают * все * поля в двойных кавычках), это работает? В этом случае будут закрыты только поля с запятой, что означает, что новая строка будет обнаженной и будет выглядеть как новая строка CSV. –
@AndrewMorton Привет, это сработало, спасибо. Проблема только в том, что когда я попытался импортировать его в контакты Outlook, он импортировал его, а затем дал ошибку ... Я открыл файл в Excel, снова сохранил его (как CSV), заменив старый файл, и он сработал! Любые идеи, почему это не сработало в первый раз? – Harambe
Самый простой способ - сохранить файл из Excel с другим именем файла и использовать шестнадцатеричный редактор для проверки содержимого файлов. В качестве указаний на то, что может быть важными различиями, может быть, что в начале одного из них есть [маркер порядка байтов] (https://en.wikipedia.org/wiki/Byte_order_mark), или, возможно, новые строки должны 0x0D * или * 0x0A в пределах записей вместо 0x0D 0x0A. –