Разделитель сым для excel

Although CSV stands for comma-separated values, it has become a common file type to define simple text files including delimiter-separated data. Thus, a CSV file can use a semicolon or tab character as a delimiter as well. In this guide, we’re going to show you how to change CSV delimiter in Excel.

Changing the delimiter in Excel Options

The first approach in our article is about changing how Excel evaluates CSV files including saving. You can make Excel using semicolon (;) as the delimiter.

  1. Open Advanced Options by following File > Options > Advanced.
  2. In the Editing options section, find Use system operators
  3. Uncheck it to override the system settings.
  4. Set Decimal separator to comma (,) and Thousands separator to period (.).
  5. Clicking OK ensures that Excel uses semicolon (;) as the delimiter.

This setting allows Excel to save CSV files with semicolons (;).

If you are using a computer with European version, your settings may already be like above. You can change the operators to convert the delimiter from a semicolon to a comma.

Changing the CSV delimiter when importing files

Excel also allows you to change the delimiter while opening files. This is a more convenient way if you do not want to alter Excel’s entire behavior. Because Excel’s data import features have been updated vastly beginning with 2016, we divided this section into two parts.

Power Query — Excel 2016 and newer

Disclaimer: Power Query has been part of Excel 2010 and Excel 2013 as well. However, Microsoft released it as an add-in. Excel 2016 has the Power Query features by default. You can learn more about Power Query at Power Query 101.

Power Query allows you to choose the delimiter when creating a connection. You can find the option in the Preview dialog. You can create the connection by using From Text/CSV command in Data > Get & Transform Data.

Selecting the file opens the Preview window. Probably, the Power Query guessed the delimiter correctly. However, you can change CSV delimiter easily at a dropdown option.

How to change CSV delimiter in Excel

Use Load or Transform Data buttons to load the data directly into your workbook or modify it in the Power Query window respectively.

Excel 2013 or older

If you are using Excel 2013 or a previous version without the Power Query add-in, you can use Text Import Wizard which shares a similar user interface with Text to Columns wizard.

  1. Click Data > Get External Data > From Text to select a file and open the Text Import Wizard.
  2. In the first step of the wizard, make sure to select Delimited
  3. Click Next button to continue.
  4. Select one or more delimiters that fits your data. You can see if the data is separated correctly in the Data preview section.
    How to change CSV delimiter in Excel 05 - Excel 2013
  5. You can modify data types for columns at the next step. Click Next to continue the third step or click the Finish button to populate the separated data in your worksheet.

Время на прочтение
11 мин

Количество просмотров 366K

CSV является стандартом де-факто для связи между собой разнородных систем, для передачи и обработки объемных данных с «жесткой», табличной структурой. Во многих скриптовых языках программирования есть встроенные средства разбора и генерации, он хорошо понятен как программистам, так и рядовым пользователям, а проблемы с самими данными в нем хорошо обнаруживаются, как говорится, на глаз.

История этого формата насчитывает не менее 30 лет. Но даже сейчас, в эпоху повального использования XML, для выгрузки и загрузки больших объемов данных по-прежнему используют CSV. И, несмотря на то, что сам формат довольно неплохо описан в RFC, каждый его понимает по-своему.

В этой статье я попробую обобщить существующие знания об этом формате, указать на типичные ошибки, а также проиллюстрировать описанные проблемы на примере кривой реализации импорта-экспорта в Microsoft Office 2007. Также покажу, как обходить эти проблемы (в т.ч. автоматическое преобразование типов Excel-ом в DATETIME и NUMBER) при открытии .csv.

Начнем с того, что форматом CSV на самом деле называют три разных текстовых формата, отличающихся символами-разделителями: собственно сам CSV (comma-separated values — значения, разделенные запятыми), TSV (tab-separated values — значения, разделенные табуляциями) и SCSV (semicolon separated values — значения, разделенные точкой с запятой). В жизни все три могут называться одним CSV, символ-разделитель в лучшем случае выбирается при экспорте или импорте, а чаще его просто «зашивают» внутрь кода. Это создает массу проблем в попытке разобраться.

Как иллюстрацию возьмем казалось бы тривиальную задачу: импортировать в Microsoft Outlook данные из таблицы в Microsoft Excel.

В Microsoft Excel есть средства экспорта в CSV, а в Microsoft Outlook — соответствующие средства импорта. Что могло быть проще — сделал файлик, «скормил» почтовой программе и — дело сделано? Как бы не так.

Создадим в Excel тестовую табличку:

Текстовая табличка

… и попробуем экспортировать ее в три текстовых формата:

«Текст Unicode» Кодировка — UTF-16, разделители — табуляция, переводы строк — 0×0D, 0×0A, объем файла — 222 байт
«CSV (разделители — запятые)» Кодировка — Windows-1251, разделители — точка с запятой (не запятая!), во второй строке значение телефонов не взято в кавычки, несмотря на запятую, зато взято в кавычки значение «01;02», что правильно. Переводы строк — 0×0D, 0×0A. Объем файла — 110 байт
«Текстовые файлы (с разделителями табуляции)» Кодировка — Windows-1251, разделители — табуляция, переводы строк — 0×0D, 0×0A. Значение «01;02» помещено в кавычки (без особой нужды). Объем файла — 110 байт

Какой вывод мы делаем из этого?.. То, что здесь Microsoft называет «CSV (разделители — запятые)», на самом деле является форматом с разделителями «точка с запятой». Формат у Microsoft — строго Windows-1251. Поэтому, если у вас в Excel есть Unicode-символы, они на выходе в CSV отобразятся в вопросительные знаки. Также то, что переводами строк является всегда пара символов, то, что Microsoft тупо берет в кавычки все, где видит точку с запятой. Также то, что если у вас нет Unicode-символов вообще, то можно сэкономить на объеме файла. Также то, что Unicode поддерживается только UTF-16, а не UTF-8, что было бы сильно логичнее.

Теперь посмотрим, как на это смотрит Outlook. Попробуем импортировать эти файлы из него, указав такие же источники данных. Outlook 2007: Файл -> Импорт и экспорт… -> Импорт из другой программы или файла. Далее выбираем формат данных: «Значения, разделенные запятыми (Windows)» и «Значения, разделенные табуляцией (Windows)».

«Значения, разделенные табуляцией(Windows)» Скармливаем аутлуку файл tsv, с разделенными табуляцией значениями и!.. — чтобы вы думали?.. Outlook склеивает поля и табуляцию не замечает. Заменяем в файле табуляцию на запятые и, как видим, поля уже разбирает, молодец.
«Значения, разделенные запятыми (Windows)» А вот аутлук как раз понимает все верно. Comma — это запятая. Поэтому ожидает в качестве разделителя запятую. А у нас после экселя — точка с запятой. В итоге аутлук распознает все неверно.

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

Мы помним, что Microsoft Excel умеет работать с текстовыми файлами, импортировать данные из CSV, но в версии 2007 он делает это очень странно. Например, если просто открыть файл через меню, то он откроется без какого-либо распознавания формата, просто как текстовый файл, целиком помещенный в первую колонку. В случае, если сделать дабл-клик на CSV, Excel получает другую команду и импортирует CSV как надо, не задавая лишних вопросов. Третий вариант — вставка файла на текущий лист. В этом интерфейсе можно настраивать разделители, сразу же смотреть, что получилось. Но одно но: работает это плохо. Например, Excel при этом не понимает закавыченных переводов строк внутри полей.

Более того, одна и та же функция сохранения в CSV, вызванная через интерфейс и через макрос, работает по-разному. Вариант с макросом не смотрит в региональные настройки вообще.

Стандарта CSV как такового, к сожалению, нет, но, между тем, существует т.н. memo. Это RFC 4180

2005-го

года, в котором описано все довольно толково. За неимением ничего большего, правильно придерживаться хотя бы RFC. Но для совместимости с Excel следует учесть его собенности.

Вот краткая выжимка рекомендаций RFC 4180 и мои комментарии в квадратных скобках:

  • между строками — перевод строки CRLF [на мой взгляд, им не стоило ограничивать двумя байтами, т.е. как CRLF (0×0D, 0×0A), так и CR 0×0D]
  • разделители — запятые, в конце строки не должно быть запятой,
  • в последней строке CRLF не обязателен,
  • первая строка может быть строкой заголовка (никак не помечается при этом)
  • пробелы, окружающие запятую-разделитель, игнорируются.
  • если значение содержит в себе CRLF, CR, LF (символы-разделители строк), двойную кавычку или запятую (символ-разделитель полей), то заключение значения в кавычки обязательно. В противном случае — допустимо.
  • т.е. допустимы переводы строк внутри поля. Но такие значения полей должны быть обязательно закавычены,
  • если внутри закавыченной части встречаются двойные кавычки, то используется специфический квотинг кавычек в CSV — их дублирование.

Вот в нотации ABNF описание формата:

 file = [header CRLF] record *(CRLF record) [CRLF]
   header = name *(COMMA name)
   record = field *(COMMA field)
   name = field
   field = (escaped / non-escaped)
   escaped = DQUOTE *(TEXTDATA / COMMA / CR / LF / 2DQUOTE) DQUOTE
   non-escaped = *TEXTDATA
   COMMA = %x2C
   DQUOTE =  %x22
   LF = %x0A
   CRLF = CR LF
   TEXTDATA =  %x20-21 / %x23-2B / %x2D-7E
 

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

  • строковое значение из цифр, не заключенное в кавычки может быть воспринято программой как числовое, из-за чего может быть потеряна информация, например, лидирующие нули,
  • количество значений в каждой строке может отличаться и необходимо правильно обрабатывать эту ситуацию. В одних ситуациях нужно предупредить пользователя, в других — создавать дополнительные колонки и заполнять их пустыми значениями. Можно определиться, что количество колонок задается заголовком, а можно добавлять их динамически, по мере импорта CSV,
  • Квотить кавычки через «слэш» не по стандарту, делать так не надо.
  • Поскольку типизации полей нет, нет и требования к ним. Разделители целой и дробной частей в разных странах разные, и это приводит к тому, что один и тот же CSV, сгенрированный приложением, в одном экселе «понимается», в другом — нет. Потому что Microsoft Office ориентируется на региональные настройки Windows, а там может быть что угодно. В России там указано, что разделитель — запятая,
  • Если CSV открывать не через меню «Данные», а напрямую, то Excel лишних вопросов не задает, и делает как ему кажется правильным. Например, поле со значением 1.24 он понимает по умолчанию как «24 января»
  • Эксель убивает ведующие нули и приводит типы даже тогда, когда значение указано в кавычках. Делать так не надо, это ошибка. Но чтобы обойти эту проблему экселя, можно сделать небольшой «хак» — значение начать со знака «равно», после чего поставить в кавычках то, что необходимо передать без изменения формата.
  • У экселя есть спецсимвол «равно», который в CSV рассматривается как идентификатор формулы. То есть, если в CSV встретится =2+3, он сложит два и три и результат впишет в ячейку. По стандарту он это делать не должен.

Пример валидного CSV, который можно использовать для тестов:

Фамилия, Имя, Адрес, Город/штат, индекс, просто строка
Иванов,Иван, Ленина 20, Москва, 08075, "1/3"
Tyler, John,110 terrace, PA,20121, "1.24"
"Петров 
""Кул""", Петя,120 Hambling St., NJ,08075, "1,24"
Смирнов,Вася,"7452 Street ""Near the Square"" road", York, 91234, "3-01"
,Миша,,Ленинград, 00123, "03-01"
"Джон ""Черная голова"", Клод",Рок,"", Маями бич,00111, "0000"
Сергей,,

точно такой же SCSV:

Фамилия; Имя; Адрес;  Город/штат; индекс; просто строка
Иванов;Иван; Ленина 20; Москва; 08075;"1/3"
Tyler; John;110 terrace; PA; 20121;"1.24"
"Петров 
""Кул"""; Петя;120 Hambling St.; NJ;08075;"1,24"
Смирнов;Вася;"7452 Street ""Near the Square"" road"; York; 91234;"3-01"
;Миша;;Ленинград; 00123;"03-01"
"Джон ""Черная голова""; Клод";Рок;""; Маями бич;00111; "0000"
Сергей;;

Первый файлик, который реально COMMA-SEPARATED, будучи сохраненным в .csv, Excel-ом не воспринимается вообще.

Второй файлик, который по логике SCSV, экселом воспринимается и выходит вот что:

Ошибки Excel-я при импорте:

  1. Учлись пробелы, окружающие разделители
  2. Последний столбец вообще толком не распознался, несмотря на то, что данные в кавычках. Исключение составляет строка с «Петровым» — там корректно распозналось 1,24.
  3. В поле индекс Excel «опустил» ведущие нули.
  4. в самом правом поле последней строки пробелы перед кавычками перестали указывать на спецсимвол

Если же воспользоваться функционалом импорта (Данные -> Из файла) и обозвать при импорте все поля текстовыми, то будет следующая картина:

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

Есть эффективный способ, как заставить Excel не приводить типы, когда это нам не нужно. Но это будет CSV «специально для Excel». Делается это помещением знака «=» перед кавычками везде, где потенциально может возникнуть проблема с типами. Заодно убираем лишние пробелы.

Фамилия;Имя;Адрес;Город/штат;индекс;просто строка
Иванов;Иван;Ленина 20;Москва;="08075";="1/3"
Tyler; John;110 terrace;PA;="20121";="1.24"
"Петров 
""Кул""";Петя;120 Hambling St.;NJ;="08075";="1,24"
Смирнов;Вася;"7452 Street ""Near the Square"" road";York;="91234";="3-01"
;Миша;;Ленинград;="00123";="03-01"
"Джон ""Черная голова"";Клод";Рок;"";Маями бич;="00111";="0000"
Сергей;;

И вот что случаеся, если мы открываем этот файлик в экселе:

Резюмирую.

Чтобы сгенерировать такой CSV, которым можно было бы пользоваться, пользователю нужно дать возможность сделать следующие настройки перед экспортом:

  1. выбрать кодировку. Как правило, важно UTF-8, UTF-16, Windows-1251, KOI8-R. Чаще всего, других вариантов нет. Одна из них должна идти по умолчанию. В случае, если данные содержат символы, не имеющие аналогов в целевой кодировке, нужно предупреждать пользователя, что данные будут битые;
  2. выбрать разделитель между полями. Варианты — табуляция, запятая, точка с запятой. По умолчанию — точка с запятой. Не забыть, что если разделитель вводится в тексте, то будет очень непросто ввести туда табуляцию, это еще и непечатный символ;
  3. выбрать разделитель между строками (CRLF 0×0D 0×0A или CR 0×0D);
  4. выбрать разделитель целой и дробной части для числовых данных (точка или запятая).
  5. выбрать, выводить ли строку заголовка;
  6. выбрать, каким образом осуществлять квотинг спецсимволов (особенно переводов строк и кавычек). В принципе, можно отступиться от стандарта и квотировать их как n и «, но нужно в этом случае не забыть квотировать сами n, если они встретятся и не забыть сделать это опцией при экспорте-импорте. Но совместимость пойдет лесом, потому что любой RFC-стандартный парсер конструкцию …,»abc«»,… посчитает за ошибку;
  7. совсем в идеале — поставить галочку «для Excel» и учитывать там те нестандартности, которые внесла Майкрософт. К примеру, заменять значения числовых полей, «похожих на дату», на конструкцию =»<значение поля>«.
  8. определиться, нужно ли оставлять «хвост» из пустых разделителей, если он образуется. Например, из 20 полей только первое содержит данные, а остальные пустые. В итоге, в строке можно либо ставить после первого 19 разделителей, либо не ставить. Для больших объемов данных это может спасти миллисекунды обработки и уменьшить размер файла.

Чтобы построить хороший и удобный импортер CSV, необходимо помнить о следующем:

  1. разбор файла нужно делать по лексемам в соответствии с грамматикой выше или пользоваться хорошо зарекомендовавшими себя готовыми библиотеками (Excel работает иначе, потому с импортом проблема);
  2. предоставлять пользователю возможность выбрать кодировку (топ 4 достаточно);
  3. предоставлять пользователю возможность выбрать разделитель между полями (запятая, табуляция, точка с запятой достаточно);
  4. предоставлять пользователю возможность выбрать разделитель между строками, но кроме вариантов CR и CRLF нужно предусмотреть «CR или CRLF». Это связано с тем, что, например, Excel при экспорте таблицы с переводами строк внутри ячеек экспортирует эти переводы строк как CR, а остальные строки разделяет CRLF. При этом при импорте файла ему все равно, CR там или CRLF;
  5. предоставлять пользователю возможность выбрать разделитель между целой и дробной частей (запятая или точка);
  6. определиться с методом разбора — сначала читаем все в память, потом обрабатываем или обрабатываем строку за строкой. В первом случае может понадобиться больше памяти, во втором случае — ошибка в середине вызовет только частичный импорт, что может вызвать проблемы. Предпочительнее первый вариант.

Рауф Алиев,
заместитель технического директора Mail.Ru Group

В этом руководстве показано, как изменить разделитель CSV при импорте или экспорте данных в/из Excel, чтобы вы могли сохранить файл в формате значений, разделенных запятыми или точками с запятой.

Эксель старательный. Эксель умный. Он тщательно изучает системные настройки машины, на которой работает, и делает все возможное, чтобы предугадать потребности пользователя… довольно часто с разочаровывающими результатами.

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

Для обработки файлов .csv Microsoft Excel использует Разделитель списка определено в Региональные настройки Windows.

В Северной Америке и некоторых других странах разделителем списка по умолчанию является запятая, поэтому вы получаете CSV с разделителями-запятыми.

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

Чтобы получить CSV-файл с другим разделителем полей, примените один из подходов, описанных ниже.

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

Когда вы сохраняете книгу в виде файла .csv, Excel разделяет значения по умолчанию. Разделитель списка. Чтобы заставить его использовать другой разделитель, выполните следующие действия:

  1. Нажмите Файл > Опции > Передовой.
  2. Под Параметры редактированияснимите флажок Использовать системные разделители.
  3. Изменить значение по умолчанию Десятичный разделитель. Поскольку это изменит способ отображения десятичных чисел на ваших листах, выберите другой вариант. Разделитель тысяч во избежание путаницы.

В зависимости от того, какой разделитель вы хотите использовать, настройте параметры одним из следующих способов.

Чтобы преобразовать файл Excel в файл CSV, разделенный точкой с запятой, установите десятичный разделитель по умолчанию на запятую. Это заставит Excel использовать точку с запятой для Разделитель списка (разделитель CSV):

  • Установлен Десятичный разделитель до запятой (,)
  • Установлен Разделитель тысяч к периоду (.)
    Сохранить файл Excel как CSV, разделенный точкой с запятой

Чтобы сохранить файл Excel как файл CSV с разделителями-запятыми, установите десятичный разделитель на точку (точку). Это заставит Excel использовать запятую для Разделитель списка (разделитель CSV):

  • Установлен Десятичный разделитель к периоду (.)
  • Установлен Разделитель тысяч до запятой (,)
    Сохранить файл Excel как CSV с разделителями-запятыми

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

Примечание. Очевидно, что изменения, которые вы сделали в параметрах Excel, ограничены Excel. Другие приложения будут продолжать использовать разделитель списка по умолчанию, определенный в региональных настройках Windows.

Изменить разделитель при импорте CSV в Excel

Существует несколько различных способов импорта CSV-файла в Excel. Способ изменения разделителя зависит от выбранного вами метода импорта.

Указать разделитель прямо в CSV-файле

Чтобы Excel мог читать CSV-файл с разделителем полей, используемым в данном CSV-файле, вы можете указать разделитель непосредственно в этом файле. Для этого откройте файл в любом текстовом редакторе, например Блокноте, и введите следующую строку перед любыми другими данными:

  • Для разделения значений запятой: sep=,
  • Для разделения значений точкой с запятой: sep=;
  • Для разделения значений вертикальной чертой: sep=|

Аналогичным образом вы можете использовать любой другой символ в качестве разделителя — просто введите символ после знака равенства.

Как только разделитель определен, вы можете открыть текстовый файл в Excel, как обычно, из самого Excel или из проводника Windows.

Например, чтобы правильно открыть CSV-файл, разделенный точкой с запятой, в Excel, мы явно указываем, что разделителем полей является точка с запятой:
Укажите разделитель непосредственно в файле CSV.

Выберите разделитель в мастере импорта текста

Другой способ обработки CSV-файла с разделителем, отличным от разделителя по умолчанию, — импортировать файл, а не открывать его. В Excel 2013 раньше это было довольно легко сделать с помощью Мастер импорта текста проживающих на Данные вкладка, в Получить внешние данные группа. Начиная с Excel 2016, мастер удален с ленты как устаревшая функция. Тем не менее, вы все еще можете использовать его:

  • Включить функцию «Из текста (устаревшая версия)».
  • Измените расширение файла с .csv на .txt, а затем откройте текстовый файл в Excel. Это запустит Мастер импорта текста автоматически.

На шаге 2 мастера вам предлагается выбрать один из предопределенных разделителей (табуляция, запятая, точка с запятой или пробел) или указать свой собственный:
Выбор разделителя для файла csv

Укажите разделитель при создании подключения Power Query

Microsoft Excel 2016 и выше предоставляет еще один простой способ импорта CSV-файла — подключившись к нему с помощью Power Query. При создании подключения Power Query вы можете выбрать разделитель в диалоговом окне предварительного просмотра:
Выберите разделитель CSV при создании подключения Power Query.

Глобально изменить разделитель CSV по умолчанию

Чтобы изменить значение по умолчанию Разделитель списка не только для Excel, но и для всех программ, установленных на вашем компьютере, вот что вам нужно сделать:

  1. В Windows перейдите к Панель управления > Область, край настройки. Для этого просто введите Область, край в поле поиска Windows, а затем щелкните Параметры региона.
    Откройте настройки региона Windows.
  2. На панели «Регион» в разделе Связанные настройкинажмите Дополнительные дата, время и региональные настройки.
    Дополнительные настройки даты, времени и региона
  3. Под Область, крайщелкните Изменить дату, время или числовой формат.
    Изменение формата даты, времени или чисел
  4. в Область, край диалоговое окно, на Форматы нажмите кнопку Дополнительные настройки…
    Дополнительные настройки
  5. в Настроить формат диалоговое окно, на Числа введите символ, который вы хотите использовать в качестве разделителя CSV по умолчанию, в Разделитель списка коробка.
    Введите символ, который вы хотите использовать в качестве разделителя CSV по умолчанию.

    Чтобы это изменение заработало, Разделитель списка не должно быть таким же, как Десятичный символ.

  6. Нажмите ХОРОШО дважды, чтобы закрыть оба диалоговых окна.

Когда закончите, перезапустите Excel, чтобы он мог принять ваши изменения.

Заметки:

  • Изменение системных настроек приведет к глобальным изменениям на вашем компьютере, которые повлияют на все приложения и все выходные данные системы. Не делайте этого, если вы не уверены на 100% в результатах.
  • Если изменение разделителя негативно повлияло на поведение какого-либо приложения или вызвало другие проблемы на вашем компьютере, отмените изменения. Для этого нажмите кнопку Перезагрузить кнопка в Настроить формат диалоговое окно (шаг 5 выше). Это удалит все сделанные вами настройки и восстановит настройки системы по умолчанию.

Изменение разделителя списка: предыстория и последствия

Перед изменением Разделитель списка на вашем компьютере, я рекомендую вам внимательно прочитать этот раздел, чтобы вы полностью понимали возможные результаты.

Прежде всего, следует отметить, что в зависимости от страны Windows использует разные разделители по умолчанию. Это потому, что большие числа и десятичные дроби записываются по-разному по всему миру.

В США, Великобритании и некоторых других англоязычных странах, включая Австралию и Новую Зеландию, используются следующие разделители:

Десятичный знак: точка (.)

Символ группировки цифр: запятая (,)

Разделитель списка: запятая (,)
Региональные настройки США и Великобритании

В большинстве европейских стран разделителем списка по умолчанию является точка с запятой (;), потому что в качестве десятичной точки используется запятая:

Десятичный знак: запятая (,)

Символ группировки цифр: точка (.)

Разделитель списка: точка с запятой (;)
Европейские региональные настройки

Например, вот как две тысячи долларов и пятьдесят центов пишется в разных странах:

США и Великобритания: 2000,50 долларов США.

ЕС: $2.000,50

Как все это связано с разделителем CSV? Дело в том, что Разделитель списка (разделитель CSV) и Десятичный символ должны быть два разных символа. Это означает установку Разделитель списка для запятой потребуется изменить значение по умолчанию Десятичный символ (если стоит запятая). В результате числа будут отображаться по-разному во всех ваших приложениях.

Более того, Разделитель списка используется для разделения аргументов в формулах Excel. Как только вы измените его, скажем, с запятой на точку с запятой, разделители во всех ваших формулах также изменятся на точки с запятой.

Если вы не готовы к таким масштабным изменениям, то меняйте разделитель только для конкретного CSV-файла, как описано в первой части этого руководства.

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

Вас также могут заинтересовать

Редактируем CSV-файлы, чтобы не сломать данные +29

Информационная безопасность, Хранение данных, IT-стандарты, Софт, Блог компании HFLabs


Рекомендация: подборка платных и бесплатных курсов Python — https://katalog-kursov.ru/

Продукты HFLabs в промышленных объемах обрабатывают данные: адреса, ФИО, реквизиты компаний и еще вагон всего. Естественно, тестировщики ежедневно с этими данными имеют дело: обновляют тест-кейсы, изучают результаты очистки. Часто заказчики дают «живую» базу, чтобы тестировщик настроил сервис под нее.

Первое, чему мы учим новых QA — сохранять данные в первозданном виде. Все по заветам: «Не навреди». В статье я расскажу, как аккуратно работать с CSV-файлами в Excel и Open Office. Советы помогут ничего не испортить, сохранить информацию после редактирования и в целом чувствовать себя увереннее.

Материал базовый, профессионалы совершенно точно заскучают.

Формат CSV используют, чтобы хранить таблицы в текстовых файлах. Данные очень часто упаковывают именно в таблицы, поэтому CSV-файлы очень популярны.


CSV-файл состоит из строк с данными и разделителей, которые обозначают границы столбцов

CSV расшифровывается как comma-separated values — «значения, разделенные запятыми». Но пусть название вас не обманет: разделителями столбцов в CSV-файле могут служить и точки с запятой, и знаки табуляции. Это все равно будет CSV-файл.

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

Из-за своих преимуществ CSV — сверхпопулярный формат обмена данными, хотя ему уже лет 40. CSV используют прикладные промышленные программы, в него выгружают данные из баз.

Одна беда — текстового редактора для работы с CSV мало. Еще ничего, если таблица простая: в первом поле ID одной длины, во втором дата одного формата, а в третьем какой-нибудь адрес. Но когда поля разной длины и их больше трех, начинаются мучения.


Следить за разделителями и столбцами — глаза сломаешь

Еще хуже с анализом данных — попробуй «Блокнотом» хотя бы сложить все числа в столбце. Я уж не говорю о красивых графиках.

Поэтому CSV-файлы анализируют и редактируют в Excel и аналогах: Open Office, LibreOffice и прочих.

Ветеранам, которые все же дочитали: ребята, мы знаем об анализе непосредственно в БД c помощью SQL, знаем о Tableau и Talend Open Studio. Это статья для начинающих, а на базовом уровне и небольшом объеме данных Excel с аналогами хватает.

Как Excel портит данные: из классики

Все бы ничего, но Excel, едва открыв CSV-файл, начинает свои лукавые выкрутасы. Он без спроса меняет данные так, что те приходят в негодность. Причем делает это совершенно незаметно. Из-за этого в свое время мы схватили ворох проблем.

Большинство казусов связано с тем, что программа без спроса преобразует строки с набором цифр в числа.

Округляет. Например, в исходной ячейке два телефона хранятся через запятую без пробелов: «5235834,5235835». Что сделает Excel? Лихо превратит номера? в одно число и округлит до двух цифр после запятой: «5235834,52». Так мы потеряем второй телефон.

Приводит к экспоненциальной форме. Excel заботливо преобразует «123456789012345» в число «1,2E+15». Исходное значение потеряем напрочь.

Проблема актуальна для длинных, символов по пятнадцать, цифровых строк. Например, КЛАДР-кодов (это такой государственный идентификатор адресного объекта: го?рода, у?лицы, до?ма).

Удаляет лидирующие плюсы. Excel считает, что плюс в начале строки с цифрами — совершенно лишний символ. Мол, и так ясно, что число положительное, коль перед ним не стоит минус. Поэтому лидирующий плюс в номере «+74955235834» будет отброшен за ненадобностью — получится «74955235834». (В реальности номер пострадает еще сильнее, но для наглядности обойдусь плюсом).

Потеря плюса критична, например, если данные пойдут в стороннюю систему, а та при импорте жестко проверяет формат.

Разбивает по три цифры. Цифровую строку длиннее трех символов Excel, добрая душа, аккуратно разберет. Например, «8 495 5235834» превратит в «84 955 235 834».

Форматирование важно как минимум для телефонных номеров: пробелы отделяют коды страны и города от остального номера и друг от друга. Excel запросто нарушает правильное членение телефона.

Удаляет лидирующие нули. Строку «00523446» Excel превратит в «523446».
А в ИНН, например, первые две цифры — это код региона. Для Республики Алтай он начинается с нуля — «04». Без нуля смысл номера исказится, а проверку формата ИНН вообще не пройдет.

Меняет даты под локальные настройки. Excel с удовольствием исправит номер дома «1/2» на «01.фев». Потому что Windows подсказал, что в таком виде вам удобнее считывать даты.

Побеждаем порчу данных правильным импортом

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

По умолчанию Excel применяет к данным в загруженном CSV-файле тип «General» — общий. Из-за него программа распознает цифровые строки как числа. Такой порядок можно победить, используя встроенный инструмент импорта.

Запускаю встроенный в Excel механизм импорта. В меню это «Data > Get External Data > From Text».

Выбираю CSV-файл с данными, открывается диалог. В диалоге кликаю на тип файла Delimited (с разделителями). Кодировка — та, что в файле, обычно определяется автоматом. Если первая строка файла — шапка, отмечаю «My Data Has Headers».

Перехожу ко второму шагу диалога. Выбираю разделитель полей (обычно это точка с запятой — semicolon). Отключаю «Treat consecutive delimiters as one», а «Text qualifier» выставляю в «{none}». (Text qualifier — это символ начала и конца текста. Если разделитель в CSV — запятая, то text qualifier нужен, чтобы отличать запятые внутри текста от запятых-разделителей.)

На третьем шаге выбираю формат полей, ради него все и затевалось. Для всех столбцов выставляю тип «Text». Кстати, если кликнуть на первую колонку, зажать шифт и кликнуть на последнюю, выделятся сразу все столбцы. Удобно.

Дальше Excel спросит, куда вставлять данные из CSV — можно просто нажать «OK», и данные появятся в открытом листе.


Перед импортом придется создать в Excel новый workbook

Но! Если я планирую добавлять данные в CSV через Excel, придется сделать еще кое-что.

После импорта нужно принудительно привести все-все ячейки на листе к формату «Text». Иначе новые поля приобретут все тот же тип «General».

  • Нажимаю два раза Ctrl+A, Excel выбирает все ячейки на листе;
  • кликаю правой кнопкой мыши;
  • выбираю в контекстном меню «Format Cells»;
  • в открывшемся диалоге выбираю слева тип данных «Text».


Чтобы выделить все ячейки, нужно нажать Ctrl+A два раза. Именно два, это не шутка, попробуйте

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

Альтернатива: Open Office Calc

Для работы с CSV-файлами я использую именно Calc. Он не то чтобы совсем не считает цифровые данные строками, но хотя бы не применяет к ним переформатирование в соответствии с региональными настройками Windows. Да и импорт попроще.

Конечно, понадобится пакет Open Office (OO). При установке он предложит переназначить на себя файлы MS Office. Не рекомендую: хоть OO достаточно функционален, он не до конца понимает хитрое микрософтовское форматирование документов.

А вот назначить OO программой по умолчанию для CSV-файлов — вполне разумно. Сделать это можно после установки пакета.

Итак, запускаем импорт данных из CSV. После двойного клика на файле Open Office показывает диалог.


Заметьте, в OO не нужно создавать новый воркбук и принудительно запускать импорт, все само

  1. Кодировка — как в файле.
  2. «Разделитель» — точка с запятой. Естественно, если в файле разделителем выступает именно она.
  3. «Разделитель текста» — пустой (все то же, что в Excel).
  4. В разделе «Поля» кликаю в левый-верхний квадрат таблицы, подсвечиваются все колонки. Указываю тип «Текст».

Штука, которая испортила немало крови: если по ошибке выбрать несколько разделителей полей или не тот разделитесь текста, файл может правильно открыться, но неправильно сохраниться.

Помимо Calc у нас в HFLabs популярен libreOffice, особенно под «Линуксом». И то, и другое для CSV применяют активнее, чем Excel.

Бонус-трек: проблемы при сохранении из Calc в .xlsx

Если сохраняете данные из Calc в экселевский формат .xlsx, имейте в виду — OO порой необъяснимо и масштабно теряет данные.


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

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

Если что-то потерялись, лечение — пересохранить из CSV в .xlsx. Или, если установлен Windows, импортнуть из CSV в Excel и сохранить оттуда.

После пересохранения обязательно еще раз проверяю, что все данные на месте и нет лишних пустых строк.

Если интересно работать с данными, посмотрите на наши вакансии. HFLabs почти всегда нужны аналитики, тестировщики, инженеры по внедрению, разработчики. Данными обеспечим так, что мало не покажется :)

CSV стенды для значения через запятую, что означает текстовый файл, в котором для разделения значений используется запятая. Но файл CSV также может использовать символ точки с запятой в качестве разделителя списка. Иногда файл с разделителями-запятыми — это не то, что вам нужно, вместо этого вам нужен файл, разделенный точкой с запятой. В этом уроке мы поговорим о том, как изменить разделитель файлов при экспорте файла Excel в формате CSV.
документ изменить-разделитель-при-сохранении-как-csv 1

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


изменить разделитель при сохранении файла Excel в формате CSV

В таких странах, как США и UK, разделитель списка по умолчанию — это запятая, поэтому файл CSV разделен запятыми. В то время как во многих европейские страны, точка с запятой используется в качестве разделителя списка по умолчанию, поскольку запятая установлена ​​в качестве десятичного символа. Это означает, что в Европе файл CSV обычно разделяется точкой с запятой. Чтобы изменить разделитель при сохранении файла Excel в формате CSV, сделайте следующее.

Обратите внимание, что в нашем примере разделителем списка по умолчанию является запятая.

1. Откройте Эксель. Чтобы изменить разделитель списка с запятой на точку с запятой, щелкните Файл > Опции, Параметры Excel всплывает диалоговое окно. Нажмите на Дополнительно опцию.
документ изменить-разделитель-при-сохранении-как-csv 2

2. в Параметры редактирования раздел, снимите флажок что собой представляет Используйте системные разделители пунктом.
документ изменить-разделитель-при-сохранении-как-csv 3

3. Установить Десятичный разделитель в запятая (,) и установите Тысяча сепараторов в период (.). Нажмите OK.
документ изменить-разделитель-при-сохранении-как-csv 4

4. Откройте файл Excel, который вы хотите сохранить в формате CSV. Нажмите Файл > Сохранить как.

5. Сохранить как всплывает диалоговое окно. Измените тип Сохранить как на CSV (с разделителями-запятыми) в раскрывающемся списке.
документ изменить-разделитель-при-сохранении-как-csv 5

6. Откройте файл CSV, который вы только что сохранили, с помощью Блокнота. Вы увидите, что этот файл CSV точка с запятой.
документ изменить-разделитель-при-сохранении-как-csv 6

Заметки

  1. Если ты хочешь изменить разделитель списка обратно в запятая, Вы можете проверка что собой представляет Используйте системные разделители коробка. Или установите Десятичный разделитель в период (.) и установите Тысяча сепараторов в запятая (,).
    документ изменить-разделитель-при-сохранении-как-csv 7
  2. In европейские страны, чтобы изменить разделитель с точка с запятой в запятая, вы также должны снимите флажок что собой представляет Используйте системные разделители коробка. Затем установите Десятичный разделитель в период (.) и установите Тысяча сепараторов в запятая (,).

Прочие операции (статьи)

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

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

Как разделить текст по пробелу/запятой/разделителю в Excel?
Если у вас есть список столбцов с данными, и вы хотите разделить их на несколько столбцов с помощью определенного разделителя, как на приведенных ниже снимках экрана, как вы можете разделить их в Excel? Возможно, некоторые из пользователей думают только о функции Text to Column, но теперь я представлю вам не только функцию Text to Columns, но и код VBA.


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы и хранение данных; Разделить содержимое ячеек; Объедините повторяющиеся строки и сумму / среднее значение… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Избранные и быстро вставляйте формулы, Диапазоны, диаграммы и изображения; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Группировка сводной таблицы по номер недели, день недели и другое … Показать разблокированные, заблокированные ячейки разными цветами; Выделите ячейки, у которых есть формула / имя

вкладка kte 201905


Вкладка Office — предоставляет интерфейс с вкладками в Office и значительно упрощает вашу работу

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Комментарии (0)


Оценок пока нет. Оцените первым!

Понравилась статья? Поделить с друзьями:

А вот еще интересные статьи:

  • Разделить на 1000 в excel через специальную вставку
  • Разделитель строки в ячейке excel
  • Разделить листы excel на книги файлы
  • Разделитель строк в word
  • Разделить колонку в word

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии