Как вообще создается файл CSV? Через запятую или точку с запятой? Любой совет, какой из них использовать?
;, которое автоматически распознается как в Ubuntu, так и в Windows, без необходимости диктовать какие-либо конкретные настройки.
Как вообще создается файл CSV? Через запятую или точку с запятой? Любой совет, какой из них использовать?
;, которое автоматически распознается как в Ubuntu, так и в Windows, без необходимости диктовать какие-либо конкретные настройки.
Ответы:
В Windows это зависит от экрана настройки «Язык и региональные стандарты», где находится разделитель списка. Это символ, который приложения Windows ожидают в качестве разделителя CSV.
Конечно, это действует только в приложениях Windows, например, Excel не будет автоматически разбивать данные на столбцы, если файл не использует вышеупомянутый разделитель. Все приложения, использующие региональные настройки Windows, будут иметь такое поведение.
Если вы пишете программу для Windows, которая требует импорта CSV в другие приложения, и вы знаете, что для ваших целевых машин установлен разделитель списков ,, то сделайте это, в противном случае я предпочитаю, ;поскольку это вызывает меньше проблем с десятичными точками, группировкой цифр и не появляется в большом количестве текста.
sep=;поверх файла CSV.
Cили C++под Windows, вы можете использовать следующий API для получения общесистемного или пользовательского разделителя:GetLocaleInfo(lcid, LOCALE_SLIST, buff, _countof(buff));
Я бы сказал, придерживайтесь запятой, поскольку это широко известно и понятно. Обязательно укажите свои ценности и избегайте цитат.
ID,NAME,AGE
"23434","Norris, Chuck","24"
"34343","Bond, James ""master""","57"
CSV - это стандартный формат, описанный в RFC 4180 (в 2005 г.), так что недостатка в стандарте нет. https://www.ietf.org/rfc/rfc4180.txt
И даже до этого C в CSV всегда означало запятую, а не semiColon :(
Жаль, что Microsoft продолжает игнорировать это и по-прежнему придерживается той чудовищности, в которую они превратили это десятилетия назад (да, я признаю, это было до создания RFC).
Только если текст заключен в двойные кавычки, такие кавычки в тексте экранируются двойными кавычками. Эти примеры представляют те же три поля:
1, "этот текст содержит" "кавычки" "", 3
1, этот текст содержит «кавычки», 3
Стандарт не охватывает значения даты и времени, лично я стараюсь придерживаться формата ISO 8601, чтобы избежать путаницы день / месяц / год - месяц / день / год.
Также актуально, но специально для того, чтобы преуспеть, посмотрите этот ответ и этот другой, который предлагает вставить строку в начало CSV с
"sep=,"
Чтобы сообщить Excel, какой разделитель ожидать
1.> Измените формат файла на .CSV (разделенные точкой с запятой)
Для достижения желаемого результата нам необходимо временно изменить delimiterнастройку в ExcelОпциях:
Move to File -> Options -> Advanced -> Editing Section
Снимите флажок с параметра «Использовать системные разделители» и поставьте запятую в поле «Десятичный разделитель».
Теперь сохраните файл в .CSVформате, и он будет сохранен в формате, разделенном точкой с запятой.
Первоначально это должна была быть запятая, однако, поскольку запятая часто используется в качестве десятичной точки, она не была бы таким хорошим разделителем, поэтому другие, такие как точка с запятой, в основном зависят от страны
http://en.wikipedia.org/wiki/Comma-separated_values#Lack_of_a_standard
CSV - это файл, разделенный запятыми. Обычно разделителем является запятая, но я видел много других символов, используемых в качестве разделителей. Просто они используются не так часто.
Чтобы посоветовать вам, что использовать, нам нужно знать ваше приложение. Является ли файл специфичным для вашего приложения / программы, или он должен работать с другими программами?
"quote"своих ценностей.
Чтобы изменить запятую на точку с запятой в качестве разделителя Excel по умолчанию для CSV - перейдите в Регион -> Дополнительные настройки -> вкладка Числа -> Разделитель списка и введите; вместо значения по умолчанию
,десятичный разделитель и вы экспортируете файл со столбцами, разделенными знаком, ,когда вы открываете его в Excel, текст будет отображаться ТОЛЬКО в ОДНОМ столбце. В Excel 2013 выберите первый столбец, перейдите в ДАННЫЕ -> Текст в столбцы -> Выбрать Delimited, нажмите, Nextзатем выберите только Commaна, Delimitersи вы сразу увидите изменения в Data previewи, наконец, нажмитеFinish
Хорошо, чтобы просто сказать несколько слов о точке с запятой. Во многих странах для обозначения десятичной дроби используется запятая, а не точка. В основном колонии ЕС, которые состоят из половины мира, другая половина соответствует стандарту Великобритании (как, черт возьми, Великобритания такая большая O_O), поэтому, в свою очередь, использование запятой для базы данных, которая включает номер, создает большую часть головной боли, потому что Excel отказывается распознавать ее как разделитель .
Как и в моей стране, Вьетнаме, следуйте французскому стандарту, наш партнер Гонконг использует британский стандарт, поэтому запятая делает CSV непригодным для использования, а мы используем \ t или; вместо этого для международного использования, но это все еще не "стандарт" в соответствии с документом CSV.
Лучше всего сохранить его в текстовом файле с расширением csv:
Sub ExportToCSV()
Dim i, j As Integer
Dim Name As String
Dim pathfile As String
Dim fs As Object
Dim stream As Object
Set fs = CreateObject("Scripting.FileSystemObject")
On Error GoTo fileexists
i = 15
Name = Format(Now(), "ddmmyyHHmmss")
pathfile = "D:\1\" & Name & ".csv"
Set stream = fs.CreateTextFile(pathfile, False, True)
Файл существует:
If Err.Number = 58 Then
MsgBox "File already Exists"
'Your code here
Return
End If
On Error GoTo 0
j = 1
Do Until IsEmpty(ThisWorkbook.ActiveSheet.Cells(i, 1).Value)
stream.WriteLine (ThisWorkbook.Worksheets(1).Cells(i, 1).Value & ";" & Replace(ThisWorkbook.Worksheets(1).Cells(i, 6).Value, ".", ","))
j = j + 1
i = i + 1
Loop
stream.Close
End Sub