Как открыть в Excel файл CSV с разделителем запятая?
На самом деле, вопрос не столь уж и тривиален, как может показаться на первый взгляд. Формат CSV, как следует из его названия, подразумевает использование в качестве разделителя символ запятой (,). Однако, многие программы и сервисы допускают использованием и других символов. К таковым можно отнести и MS Excel, особенно если речь идёт о русифицированной его версии. В данной статье я хочу привести решение проблемы с открытием CSV-файла экспорта из Google инструмента для веб-мастеров в MS Excel. Впрочем, тема актуально и для других вариантов.
Содержание:
- Проблема экспорта поисковых запросов (ПЗ) из Google вебмастер
- CSV с разделителем запятая в UTF-8
- Проблема с кодировкой
- Разделитель запятая в CSV
- То, что помогло
- Онлайн сервис для нормализации CSV-файлов
- Подведём итоги
Проблема экспорта ПЗ из Google вебмастер
Многие из нас используют Google инструмент для веб-мастеров только для добавления сайта. Это неправильно, здесь есть масса полезной информации, например список поисковых запросов, по которым пользователи находят и заходят на сайт. Смотрите отчет: Поисковый трафик > Поисковые запросы – предварительно выбрав нужный сайт в списке.
Здесь же есть и экспорта данных в CSV-формате, с возможностью его открытия в Google Таблицы (онлайн аналог Excel). Ищите кнопку «Загрузить эту таблицу». К слову, количество отображаемых запросов на странице не влияет на полноту экспортируемых данных.
Проблема в том, что в CSV-файле используется разделитель запятой и кодировка UTF-8. Так что даже в Google Таблицы, вместо кириллицы, вы получите только набор вопросов.
Другими словами, нам нужно изменить кодировку на ANSI. А для открытия файла CSV в Excel заменить и разделитель запятой (,) на символ точки с запятой (;).
CSV с разделителем запятая в UTF-8
Проблема с кодировкой
Проще всего решить проблему с кодировкой. Для этого вы можете использовать любой текстовый редактор с этой функцией, например Notepad++. Его вы можете скачать бесплатно на официальном сайте: unotepad-plus-plus.org. Далее запускаем редактор и открываем в нём наш CSV-файл, а потом кликаем пункт меню «Кодировки» и меняем на нужную, т.е. пункт «Преобразовать в ANSI».
У меня на картинке показан обратный процесс: преобразования из ANSI в UTF-8 – но, думаю, вы это и сами заметилии, а принцип тот же.
Разделитель запятая в CSV
Теперь, что касается разделителя запятой. По сути, для Google Таблиц что-то менять не надо. Да и в англоязычной версии MS Excel это может прокатить, проверьте. Тем не менее, если нужна замена, то здесь следует учесть, что просто заменить запятую (,) на символ точки с запятой (;) не получится, т.к. в файле могут быть значения, содержащие этот символ. Они обычно помещены в кавычки. Например:
значение,1,"значение, с запятой",
По идее здесь должна помочь настройка самой операционной системы Windows: Пуск > Панель управления > Язык и региональные стандарты. На вкладке «Форматы» кликаем кнопку «Изменить этот формат…» В открывшемся окне, на вкладке «Числа» замените «Разделитель элементов списка» на нужный, т.е. символ точки с запятой (;) меняем на запятую (,).
Правда, у меня это не сработало. Да и менять настройки операционной системы, как по мне, дело не благодатное. Тем не менее, я решил указать этот вариант решения проблемы, т.к. на большинстве специализированных форумов ссылаются именно на него.
То, что помогло
Увы, но какой-то дополнительной обработки файлов с расширением .csv
в MS Excel я не нашел. Тем не менее, есть возможность обработки, но только в том случае, если сменить расширение файла, например, на .txt
. Так что меняем расширение файла и открываем его в Excel.
Появится окно «Мастер текстов (импорт)». Здесь вы можете выбрать формат исходных данных, начальную строку импорта и кодировку файла (нам нужна 1251 : Cyrillic
). К слову, почему нужно было менять кодировку, когда её можно выбрать в мастере? Потому, что кодировки UTF-8, по крайней мере у меня, здесь нету. Кликаем кнопку «Далее».
На следующем шаге мы можем выбрать символ-разделитель, причем несколько. Ставим галочку «запятая» и убираем галочку «знак табуляции». Здесь же можно выбрать и символ ограничителя строк. Это тот, что используется для значений, в которых присутствуют спецсимволы (двойные кавычки, запятая, точка с запятой, новая строка и т.д.). Вариант с двойной кавычкой, в моём случае, это то, что надо. Обратите внимание на поле «Образец разбора данных», данные стали таблицей. Кликаем кнопку «Далее».
На последнем шаге можно указать формат данных столбцов, правда выбор здесь не велик: общий (по умолчанию), текстовый, дата и пропустить столбец. Последний вариант представляется мне наиболее интересным, т.к. позволяет сразу исключить ненужные столбцы. Просто выберите соответствующий столбец и кликните для него вариант «пропустить столбец». Кликаем кнопку «Готово».
Excel сформирует нужную нам таблицу, где мы можем задать нужную ширину столбцов и формат ячеек, но это уже совсем другая история. Отмечу лишь, что есть проблема с распознанием тех же процентов.
Онлайн сервис для нормализации CSV-файлов
Впрочем, все выше изложенные проблемы решает простой онлайн сервис Normalization CSV. Он позволяет менять кодировку и символ разделителя. Правда существует ограничение в 64 000 байтов (сколько это в Кб?) для загружаемого файла, но CSV-файлы обычно весят не очень много, должно хватить. Результат обработки выводится как обычный текстовый файл, его можно сохранить с расширением .csv
.
К слову, скрипт преобразовавает значение процентов, например: 95 %
– в нужное значение для столбца «проценты» в Excel, т.е. делится на 100 и получаем число с плавающей запяток, например: 0,95
. Если нужны ещё какие-то преобразования: пишите, попробуем доработать.
Ну, а если предложенный онлайн сервис вас не устраивает, вы всегда можете воспользоваться выше приведённой инструкцией.
Подведём итоги
Некоторые онлайн сервисы предоставляют возможность экспорта данных в просто и удобном CSV-формате. Как следует из названия, подразумевает использование в качестве разделителя символ запятой (,). Однако, многие приложения трактуют этот формат несколько своевольно, что приводит к закономерным проблемам. К тому же сейчас всё более популярна кодировка UTF-8, в то время как Excel или Google Таблицы используют ANSI.
Решить проблему с кодировкой поможет, к примеру, Notepad++, а для того, чтобы разобраться с разделителем, достаточно изменить расширение файла на .txt и воспользоваться мастером текстов в Excel. Впрочем, все эти задачи способен решить бесплатный онлайн сервис Normalization CSV, правда стоит учесть его ограничение на объём загружаемого файла. На этом у меня всё. Спасибо за внимание. Удачи!
Короткая ссылка: http://goo.gl/rAe1Xb
Сейчас в инете дофига различный csv конверторов, которые всё это понимают и настраивают. Да и софта такого рода хватает.
@Максим безусловно, вариантов решения данной проблемы существует достаточно много. В тоже время, практика показывает, что люди склонный использовать то, что есть под рукой и чем оно проще тем лучше. В случае с Normalization CSV мы имеем не столько csv конвертор, сколько нормализатор, который работает исходя из особенностей экспорта данных онлайн сервисов, в частности Google инструмента для веб-мастеров.
@Константин Кирилюк если судить по показателям соцкнопочек, то люди выбирают не самые простые решения и отдают предпочтение перекодированию, переименовыванию и мастертекстовованию :-)
@Максим ну, не всё так сразу. К тому же популяризацией своего сервиса я не занимался, да и не стремлюсь... несколько опасаюсь нагрузок. Так что пусть используют вот такие, далеко не простые решения, а кому надо могут воспользоваться и сервисом.
Заметил траблу с Normalization CSV. Если в CSV файле присутствует символ бесконечности ∞ то на нём всё и стопорится, по крайней мере если делать смену кодировки из UTF-8 в ANSI.
@Максим да, была такая проблема. Пытался и так и эдак, но пришлось заменить этот символ на знак вопроса. Это самый оптимальный вариант, который я вижу на данный момент. Как я понял проблема в iconv мутках.
Спасибо, выручили )
Помимо ',' в Разделитель элементов списка в разделе Числа - Разделитель целой и дробной части поставьте '.' и все заработает
Константин, большое спасибо
Помимо ',' в Разделитель элементов списка в разделе Числа - Разделитель целой и дробной части поставьте '.' и все заработает
вот это очень помогло. спасибо анониму от анонима! большое спасибо!
чувак, отличная публикация. благодарю
Огромное спасибо, статья очень выручила! :)
Спасибо!
Спасибо за статью, познавательно!
Поделюсь решением, которое нашел для себя - бесплатная утилита grepWin
Осуществляет поиск и замену текста по многим файлам одновременно. В запросах на поиск и замену можно использовать регулярные выражения.
Если файлов много ей просто цены нет - сложил в одну папочку (можно с подпапочками при желании)все файлы которые нужно править, запускаешь grepWin из контекстного меню этой папки, и меняй что душе угодно.
Я лично стабильно имею дело с файлами статистики, собираемыми командой sar на linux. Один раз написал нужные тебе регэкспы (с непривычки правда не сразу получится, рекомендую попрактиковаться на regex101.com) и любое количество файлов прогоняешь за секунды/пару минут (ну тут смотря по размеру файлов и сложности изменений, может и дольше занять)
Поделюсь своими регулярками:
приходят файлы с колонками цифр, колонки разделены пробелами. Чтобы открыть в экселе надо серию пробелов заменить на ;
Искать: \s{2,} Заменить на: ;
Замена десятичной точки на запятую:
Искать (\d)\.(\d) Заменить на: $1,$2
Не забываем выбрать опцию RegExp search сверху от поля для поиска.
Помог понять (потому что подробно изложил)! Спасибо!!!
В Notepad++ я записал макрос с такими действиями:
1. Найти все запятые , и заменить на точку с запятой ;
2. Найти все точки . и заменить их на запятые ,
3. Сохранить файл
Теперь любой "некирилличный" CSV преобразовывается одной командой и потом нормально открывается в Excel без изменений региональных настроек.