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

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

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

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

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

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

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

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

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

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

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

Это очень простой трюк, чтобы не менять региональные настройки конфигурации окон.

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

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

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

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

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

  • Как показать только область печати в Excel и оставить серые?
  • Excel. Как vlookup вернуть несколько значений?
  • Назначить инициированный код нескольким изображениям - Excel VBA
  • Как я могу автоматически печатать файлы электронной таблицы Excel?
  • Таблица сводных таблиц Excel - деактивировать функцию colapse / expand
  • Какие функции рабочего листа могут возвращать массив
  • Условное соответствие на основе даты и времени
  • Шрифт гиперссылки в Excel всегда изменяется на шрифт / размер шрифта по умолчанию
  • Транспонирование данных из одного списка столбцов в несколько столбцов
  • Как создать отчет Excel за месяц
  • Не удается открыть файл Excel 2010 на SharePoint Foundation 2013
  • Давайте будем гением компьютера.