Як змусити 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 , цей параметр , здається, виводиться з десяткового роздільника значення (в мові і область панелі System Preferences , перейдіть до Advanced ). Якщо десятковий роздільник - це точка, то роздільником CSV за замовчуванням буде кома, але якщо десятковий роздільник - це кома, то типовим роздільником CSV буде крапка з комою.

Як ви самі сказали в коментарі, для користувачів Mac існує альтернатива швидко переглянути ці файли CSV. Це плагін для Quick Look під назвою quicklook-csv, який обробляє виявлення роздільника.


Дякую, це має сенс. Я думаю, тоді він просто не інтерпретує вкладки як роздільники за замовчуванням (що також має сенс, оскільки CSV означає значення, розділені комами, але люди на практиці використовують вкладки в CSV-файлах, і мені потрібно з цим боротися).
Szabolcs

@Szabolcs Excel не намагатиметься виявити роздільник під час відкриття файлу CSV (використовуючи файл-> open або Explorer ), він просто використовуватиме системні налаштування. Однак йому вдасться автоматично визначити роздільник (вкладка, кома, крапка з комою або пробіл) під час використання функції імпорту .
zakinster

1
Ваша відповідь була дійсною і в OS X: все ще десяткова крапка / кома викликає «неприємності» (як ви згадуєте у відповіді).
Szabolcs

1
Пізніше редагуйте: вибачте! це працює! Мабуть, потрібно знову перезапустити програму та / або вийти / -в інший раз, щоб застосувати зміни. Не знаю точно, коли, але через деякий час після моєї зміни це раптом спрацювало.
mmo

1
На Mac OS X, не забудьте QUIT Excel після внесення змін. Excel залишається відкритим, якщо ви закриєте лише всі відкриті аркуші. Клацніть Excel> Закрити Excel або просто натисніть Command + Q і все закінчено.
Пауло Педросо

94

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

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

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


1
Переконайтесь, що ви -лично використовуйте це для перегляду-файлу у файлі, не змінюючи його, інакше у вас може виникнути одна з таких проблем: theonemanitdepartment.wordpress.com/2014/12/15/…
Wouter

Ще краще, якщо вам потрібно буде розповсюджувати цей файл іншим, тож ви впевнені, що excel зможе зрозуміти файл, незалежно від їх конфігурації. Я завжди використовую csv, щоб мати можливість використовувати будь-яку систему управління версіями для спільного використання та співпраці над цими файлами, але боровся з комою проти крапками з комою, і завжди маю на увазі всіх, щоб змінити свої конфігурації, не більше. Дуже дякую!
Рафареїно

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-сервера Management Studio 2005 і стали закодовані UCS-2 LE BOM. За допомогою Notepad ++ я переключився на кодування UTF-8і все почало працювати.


0

Не забудьте ознайомитись з файлом CSV у такому простому редакторі, як «Блокнот», щоб переконатися, що він правильно відформатований.

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


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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.