2013-06-11 11:04:23 +0000 2013-06-11 11:04:23 +0000
99
99

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

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

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

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

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

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

Ответы (9)

100
100
100
2013-12-10 14:38:58 +0000

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

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

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

85
85
85
2013-06-11 11:07:17 +0000

При открытии 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. Нажмите OK дважды.
  • *

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

В Mac OS X данная настройка, кажется, выведена из значения десятичного разделителя (в панели Язык и регион Предпочтения, перейдите в Advanced). Если точка Decimal Separator, то CSV-разделитель по умолчанию будет запятой, но если Decimal Separator - запятая, то CSV-разделитель по умолчанию будет точкой с запятой.

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

11
11
11
2017-06-02 12:27:39 +0000

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

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

5
5
5
2018-07-21 11:55:56 +0000
1
1
1
2019-09-23 12:03:13 +0000

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

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

1
1
1
2018-06-25 14:46:53 +0000

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

ИЛИ

Установите LibreOffice и откройте CSV-файл с LibreOffice Calc.

0
0
0
2018-01-22 13:50:36 +0000

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

0
0
0
2017-06-12 17:22:25 +0000

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

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

0
0
0
2017-07-31 06:30:51 +0000

лучшим способом будет сохранить его в текстовом файле с расширением 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:\" & 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
```.

Похожие вопросы

6
13
9
10
2