Как заставить Excel интерпретировать запятую как разделитель по умолчанию в файлах CSV?

95

У меня есть несколько файлов .csv. Некоторые из них разделены запятыми, некоторые с разделителями табуляции (возможно, их следует называть .tsv ...)

csvРасширение получает связано с Excel при установке Excel. Однако, если я открою один из этих файлов с помощью Excel, все будет помещено в один и тот же столбец, и запятая не будет интерпретироваться как разделитель.

Я могу вместо Файл -> Импорт ... выбрать файл и выбрать точный способ интерпретации содержимого (разделители, типы данных и т. Д.). Но в большинстве случаев я просто хочу посмотреть на файл через табличное представление. Я не хочу обрабатывать его в Excel.

Есть ли способ заставить Excel автоматически интерпретировать разделитель и показывать CSV-файл как правильную таблицу, как только он открывается? Мне нужно это, чтобы я мог использовать Excel для быстрого просмотра таких файлов.

Я подозреваю, что должен быть способ, иначе Excel не связался бы с файлами CSV.

Сабольч
источник
Я действительно понимаю, что выбранный ответ действительно отвечает на ваш вопрос, но второй должен быть выделен, потому что он предлагает глобальное решение, которое работает через общий доступ по электронной почте, по сети и т. Д.
Rafareino

Ответы:

81

При открытии CSV-файлов Excel будет использовать системный региональный параметр, вызываемый List separatorдля определения используемого по умолчанию разделителя.

Microsoft Excel открывает файлы .csv, но, в зависимости от региональных настроек системы, он может ожидать точку с запятой в качестве разделителя вместо запятой, поскольку в некоторых языках запятая используется в качестве десятичного разделителя. (из Википедии )


В Windows вы можете изменить List separatorнастройки в соответствии Regional and Language Optionsс указаниями на веб-сайте поддержки Office :

Изменить разделитель в текстовом файле CSV

  1. Нажмите меню Пуск в Windows.
  2. Нажмите Панель управления.
  3. Откройте диалоговое окно «Язык и региональные стандарты».
  4. Нажмите вкладку региональных параметров.
  5. Нажмите Настроить / Дополнительные настройки (Win10).
  6. Введите новый разделитель в поле Разделитель списка.
  7. Нажмите ОК дважды.

Примечание : это работает только в том случае, если десятичный символ также не обозначен как запятая (в соответствии с приведенной выше цитатой из Википедии). Если это так, Excel не будет использовать запятую в качестве разделителя списка, даже если он выбран. Для многих регионов за пределами США запятая является десятичным символом по умолчанию.

В Mac OS X этот параметр, по-видимому, выводится из параметра десятичного разделителя (на панели « Язык и регион» в Системных настройках перейдите к разделу «Дополнительно» ). Если десятичный разделитель является точкой, то разделитель CSV по умолчанию будет запятой, но если разделитель десятичных чисел является запятой, то разделитель CSV по умолчанию будет точкой с запятой.

Как вы сами сказали в комментарии, у пользователей Mac есть альтернатива - быстро просмотреть эти CSV-файлы. Это плагин для Quick Look, называемый quicklook-csv, который обрабатывает обнаружение разделителя.

zakinster
источник
Спасибо, это имеет смысл. Думаю, тогда по умолчанию вкладки просто не будут интерпретироваться как разделители (что также имеет смысл, поскольку CSV означает разделенные запятыми значения, но на практике люди используют вкладки в CSV, и мне нужно с этим справиться).
Сабольч
@Szabolcs Excel не будет пытаться обнаружить разделитель при открытии CSV-файла (используя file-> open или проводник ), он просто использует системные настройки. Однако ему удастся автоматически определить разделитель (табуляция, запятая, точка с запятой или пробел) при использовании функции импорта .
Закинстер
1
Ваш ответ был действителен и в OS X: это все еще десятичная точка / запятая, которая вызывает «проблему» (как вы упоминаете в ответе).
Сабольч
1
Позднее редактирование: извинения! это работает! По-видимому, необходимо перезапустить программу и / или выйти / -in снова, чтобы применить изменения. Я не знаю точно, когда, но вскоре после моей перемены это неожиданно сработало.
ммм
1
В Mac OS X не забудьте выйти из Excel после внесения изменений. Excel остается открытым, если закрыть только все открытые листы. Нажмите Excel> Выйти из Excel или просто нажмите Ctrl + Q, и все готово.
Пауло Педросо
94

Если вы не хотите изменять формат файла и ориентированы ТОЛЬКО на Excel, вы можете воспользоваться следующим приемом Excel, чтобы помочь вам.

Добавьте новую строку в верхней части файла с текстом "sep=,"(включая кавычки), чтобы Excel открывал файл с "," в качестве разделителя списка.

Это очень простой способ избежать изменения региональных настроек Windows и получить последовательный результат. Но это специфично для Excel.

user280725
источник
1
Убедитесь, что вы используете -only- только для просмотра файла и не изменяете его, иначе вы можете столкнуться с одной из следующих проблем: theonemanitdepartment.wordpress.com/2014/12/15/…
Wouter
Еще лучше, если вам нужно распространить этот файл среди других, поэтому вы должны быть уверены, что Excel сможет понять файл, независимо от его конфигурации. Я всегда использую csv, чтобы иметь возможность использовать любую систему управления версиями для совместного использования и совместной работы над этими файлами, но я боролся с запятой против точек с запятой и всегда мешал всем менять свои настройки, не более того. Большое спасибо!
Rafareino
1
Один поверх чего?
NateS
11

Вам не нужны кавычки sep=,- если это первая строка файла, он будет работать, по крайней мере, в Excel 2016.

Я обнаружил, что если файл с разделителями табуляции, sep=\tработает нормально, с кавычками и без.

Стивен Хемингуэй
источник
4

Принятый ответ правильный, но я визуальный человек. Вот каждый шаг в формате скриншота, как это сделать в Windows 10.

введите описание изображения здесь введите описание изображения здесь введите описание изображения здесь введите описание изображения здесь введите описание изображения здесь введите описание изображения здесь

Сэм Б
источник
2
Очень полезно! Просто запомните (как уже упоминалось где-то выше), что List separatorбудет игнорироваться, если используется тот же символ Decimal symbol. Вы часто найдете ,десятичный символ, поэтому убедитесь, что изменили его на что-то другое (например, .) при установке List separatorна ,.
Дирк
1

Если разделителем в региональных настройках является не запятая, а точка с запятой (разделитель на голландском языке), переименуйте файл CSV в файл TXT. Щелкните правой кнопкой мыши файл TXT, выберите «Открыть с помощью» и выберите «Excel». В Excel выберите первый столбец, выберите данные на ленте и разделите текст на столбцы.

ИЛИ ЖЕ

Установите LibreOffice и откройте файл CSV с помощью LibreOffice Calc.

Эрик ВДБ
источник
1

У меня был .csvфайл с разделителем ;и региональные настройки, установленные на разделитель списка ;. Однако Excel по-прежнему не анализирует столбцы.

введите описание изображения здесь

Это оказалось проблемой кодирования. Файлы были экспортированы из SQL Server Management Studio 2005 и закодированы в UCS-2 LE BOM. Используя Notepad ++, я переключил кодировку на UTF-8и все стало работать.

Ogglas
источник
0

Обязательно проверьте файл CSV в простом редакторе, таком как Блокнот, чтобы убедиться, что он правильно отформатирован.

Я добавил этот ответ после того, как решил глупую ошибку, из-за которой CSV-файлы, созданные мной с помощью VB, не были открыты с отдельными столбцами в Excel. Я обнаружил, что способ написания строк заключал каждую строку в кавычки. Excel скрыл кавычки и показал всю строку в столбце A, создавая впечатление, будто игнорирует мои разделители запятых.

EDJ
источник
0

Лучший способ будет сохранить его в текстовом файле с расширением 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)

fileexists:

    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
AzizD
источник
0

Для голландского языка у меня была проблема, что Excel 2008 на Windows 7 не придерживался RFC4180:

«Поля, содержащие разрывы строк (CRLF), двойные кавычки и запятые, должны быть заключены в двойные кавычки».

Разделенный запятыми файл правильно содержит поля с запятой (голландский десятичный разделитель), заключенные в двойные кавычки. В голландском языковом стандарте десятичный разделитель - это разделитель ,списка, ;поэтому Excel не может прочитать файл, ,используемый для обоих (даже после явного изменения разделителя списка на ,панели управления).

Вход выглядит так:

"06-07-2017 17:03:18","********",0:01:04,Uitgaand,"0,1879","0,2273","0,0395",21

Решение было дано @ user280725:

Используйте Блокнот, чтобы вставить в качестве первой строки:

sep=,

(Это означает, что Примечание пользователя @zakinster в его решении больше не нужно применять.)


Интересно: если файл csv по-прежнему загружен, если в панели управления теперь установить языковой стандарт для английского языка США и сохранить файл, он будет преобразован в формат английского языка США (запятая в качестве разделителя списка и точка в качестве десятичного разделителя).

Пол Огилви
источник