81

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

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

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

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

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

8 ответов8

78

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

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

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

75

При открытии 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, который обрабатывает обнаружение разделителя.

9

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

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

3

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

1

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

ИЛИ ЖЕ

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

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
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 по-прежнему загружен, если в панели управления теперь установить языковой стандарт для английского языка США и сохранить файл, он будет преобразован в формат английского языка США (запятая в качестве разделителя списка и точка в качестве десятичного разделителя).
0

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .