Файл может содержать возможности несовместимые с форматом csv
Содержимое баз данных обычно извлекается в виде файла с расширением .csv. Однако, это просто текстовый файл, не слишком удобный для чтения. Для работы с содержимым базы необходимо представить её в другом формате – зачастую удобнее всего листы Excel. О том, какие существуют способы это сделать, какой из них лучше, и какие бывают ошибки при переносе данных, будет рассказано в этой статье.
Как конвертировать CSV в формат Excel
Существуют различные пути, которыми документ формата CSV, скачанный из базы данных, может быть перенесён в Excel. Мы обсудим три из них:
- Прямое открытие в Excel.
- Открытие через Windows Explorer.
- Импорт документа со сменой формата.
Открытие CSV-документа в Excel
Excel может открывать документы с расширением .csv напрямую, без конвертации. Формат после открытия указанным способом не меняется, сохраняется расширение .csv – хотя после редактирования расширение можно поменять.
- Запустите Excel, кликните на « Файл «, затем « Открыть «.
- В появившемся окне выберите опцию « Текстовые файлы » из развернувшегося перечня.
- Найдите необходимый Вам документ и нажмите на него двойным кликом мыши.
Документы .csv открываются в Excel сразу, без дополнительных манипуляций. А вот файлы .txt потребуют конвертации – возникнет окошко « Мастера импорта текста «.
Есть случаи, когда документ лучше не открывать напрямую, а вызвать Мастер. Такой подход оправдан в следующих случаях:
- разделительный знак, применяемый в документе, нестандартный, или их содержится несколько разновидностей;
- в документе записаны даты в разных форматах;
- вы конвертируете числа, начинающиеся с нулей, и хотите оставить их в таком виде;
- перед тем, как перенести данные, вы хотите увидеть, как будет выглядеть конечный результат;
- вам в целом нужна большая гибкость при переносе.
Мастер запустится, если поменять расширение документа на .txt. Также импорт файла можно начать иначе, о чём пойдёт речь далее, после описания второго способа открытия.
Если после открытия документа в него внести изменения, Excel предложит сохранить его в формате .xls (или .xlsx), поскольку иначе часть форматирования будет потеряна. Потом всегда останется возможность сменить формат обратно, однако, может утратиться другая часть содержимого – в начале чисел могут исчезнуть нули, часть записей может поменять свой вид.
Открытие CSV-документа через Windows Explorer
Этот путь принципиально не отличается от предыдущего. Чтобы открыть документ, достаточно два раза кликнуть на него в Windows Explorer.
Перед открытием убедитесь, что рядом с именем документа находится значок программы Excel, а не какой-то другой – это означает, что именно Excel выбран как программа, которой следует открывать подобные файлы. Иначе откроется какая-либо иная программа. Сменить её на Excel можно так:
- Вызовите кликом правой кнопки мыши на любой файл .csv контекстное меню и в нём примените Открыть с помощью… > Выбрать программу .
- Выберите Excel (desktop) из Рекомендованных программ , обозначьте его как программу, которую следует применять для подобных файлов всегда (поставьте галочку внизу), и закройте окошко нажатием ОК .
Импорт CSV в Excel
Также возможно превратить открываемый документ в книгу Excel. Формат сменится на .xls для ранних версий Excel (2000, 2003) и на .xlsx — для всех остальных. Всё содержимое будет отображено на одном листе.
- Нажмите на ячейку в листе, куда должен начаться импорт. Обычно это самая первая ячейка в таблице, А1 . Начиная с неё, будет заполнено столько строк, сколько есть в открываемом файле, и столько столбцов, сколько имеется значений в каждом столбце.
- Во вкладке “ Данные” в группе “ Получение внешних данных” выберите “ Из текста” .
- В возникшем окне найдите требуемый документ и кликните на него два раза (также можно использовать кнопку Импорт внизу окна).
- Далее нужно следовать пошаговой инструкции открывшегося Мастера импорта текста .
На изображении ниже видны изначальный документ и результат, который предполагается получить. Чтобы после импорта всё выглядело именно так, нужно применить различные настройки, о которых пойдёт речь далее.
Шаг 1 . Мастер предложит Вам выбрать тип файла – как нетрудно догадаться, это будет « с разделителями » (по-английски — delimited ), и строку, с которой начнётся перенос содержимого — скорее всего, нужно начать со строки 1 , если вы не хотите переносить только часть содержимого. В окне ниже будут показаны первые строки из выбранного документа.
Шаг 2 . Теперь требуется понять, какой используется разделитель (их может быть больше одного) в файле, и указать этот знак в Мастере . В нём есть опции выбора из стандартных разделителей, но если в документе применён нетипичный символ, можно выбрать Другой и ввести требуемый знак. В используемом для демонстрации файле разделители — Запятая и Таб . Запятые разделяют ячейки с характеристиками продуктов, такими как порядковый номер и количество проданных экземпляров, а табуляция отделяет один продукт от другого — информация о каждом должна начинаться с новой строки.
Также нужно определить и указать ограничитель текста. Это символ, поставленный перед и после каждого отрезка текста, который должен располагаться в одной ячейке. Благодаря ограничителю, каждый подобный отрезок воспринимается как отдельное значение, даже если внутри него присутствуют символы, выбранные для разделения значений. В нашем документе каждое значение обрамлено кавычками — потому, даже если в нём присутствует запятая (например «начало, потом продолжение»), весь его текст будет помещён в одну ячейку, а не в две последовательные.
Шаг 3. Здесь достаточно взглянуть на превью и, если на нём не видно недопустимых огрехов, нажать Готово . Может случиться так, что некоторые из значений будут разделены не одним разделителем, а несколькими, в результате между ними возникнут ячейки без значений. Чтобы такого не происходило, выберите флажок Считать последовательные разделители одним .
- Выберите путь назначения (это может быть новый или уже существующий лист) и нажмите ОК , чтобы закончить процесс импорта.
Также можно нажать Свойства — там содержатся другие возможности. Например, можно форматировать содержимое, настроить разметку и то, как информация будет обновляться.
Иногда результат конвертации оказывается далёким от ожидаемого. О том, как этот результат можно изменить, пойдёт речь в следующем разделе статьи.
Проблемы при конвертации и их решения
За всё время, которое существует формат CSV, никто не удосужился официально задокументировать его. Потому, хотя и предполагается, что для разделения значений должны использоваться запятые, на самом деле в разных базах данных используются различные разделительные знаки — точка с запятой, знак табуляции и другие.
Ограничители текста также могут варьироваться – чаще всего это либо кавычки, либо метка порядка байтов. Ограничителей может и вовсе не быть – тогда символ, используемый как разделитель, всегда воспринимается как таковой (тогда это обычно не запятая – она слишком часто применяется в тексте — а иной, менее распространённый символ).
Нестандартные файлы могут открываться неправильно — чтобы они отображались так, как надо, приходится менять настройки компьютера или открывающей программы. Давайте посмотрим, какие бывают затруднения, и какие для них существуют решения.
Файл открывается неправильно
Признаки . Всё содержимое документа помещается в первый столбец.
Причина . Документ использует в качестве разделителя знак, который в настройках компьютера не обозначен как таковой, или же зарезервирован под иную функцию. Например, запятая может быть зарезервирована для того, чтобы разделять части числа в десятичных дробях, и потому не может разделять значения в файле.
Решения . Есть разные способы решить эту проблему:
- Сменить разделяющий знак в самом документе. Откройте его в Notepad или подобном редакторе, и в начальную строку (пустую, все данные должны быть в строках ниже) внесите указанный ниже текст:
- для смены разделителя на запятую: sep=,
- для смены на точку с запятой: sep=;
Иной символ, написанный после sep= в начальной строке, также станет разделителем.
- Разделительный знак, используемый в файле, можно указать и в самой программе Excel. В версиях 2016, 2013 или 2010 года для этого нужно открыть вкладку Данные и выбрать “ Текст по столбцам” в группе “ Работа с данными” .
После этого откроется окно “ Мастера распределения текста по столбцам” . Там из предложенных форматов данных нужно выбрать те, что с разделителями. Потом нужно нажать Далее и, после выбора разделителя, Готово .
- Чтобы документ автоматически открывался через Мастер импорта , а не просто в листе Excel, расширение можно сменить с .csv на .txt. В Мастере есть возможность указать любой символ как разделяющий — каким образом это сделать, в статье объяснено ранее.
- Используйте VBA. Воспользоваться можно, например, — он подойдёт для Excel 2000 или 2003. Код можно изменить так, чтобы он подходил для других версий.
Решения, представленные выше, рассчитаны на отдельные документы, настройки которых отличаются от обычных. Указанные последовательности действий нужно будет применять для каждого файла, который открывается неправильно. Если неправильно открывается большая часть документов, возможно, лучшим решением будет смена настроек компьютера – об этом сказано в пятом решении.
- Измените разделитель и знак десятичной дроби в настройках компьютера
В Панели управления , вызываемой кнопкой Пуск , выберите “ Дополнительные параметры” из перечня “ Региональные Стандарты” . После клика возникнет окошко “ Настройка формата” – в нём можно выбрать “ Разделитель элементов списка” и разделитель целой и дробной части числа. Если в качестве разделительного знака в файлах требуется запятая, сначала установите точку как знак для дроби. Может оказаться и наоборот – нужна точка с запятой как разделительный символ. Тогда для дробей можно оставить любой знак, это не вызовет конфликта.
Когда все настройки завершены, нажмите ОК на обоих из двух открытых окон — они закроются, и изменения сохранятся. Имейте в виду, что теперь они работают для всех программ в компьютере.
Исчезают нули в начале чисел
Признак . Некоторые из значений в исходном документе – числа, которые начинаются нулями, не отделёнными знаком дроби (например, шифры и коды с фиксированным количеством цифр, логины и пароли, показания счётчиков и приборов). В Excel нули в начале таких чисел исчезают. Если отредактировать файл и потом сохранить его как книгу Excel, в этой книге уже нельзя будет найти, где были те числа с нулями.
Причина . Excel имеет раздельные форматы для текста и чисел. В текстовых файлах подобного разделения нет, и потому Excel присваивает всем значениям Общий формат. Он означает, что текст отображается как текст, а цифры без алфавитных символов отображают как число, которое не может начинаться с нулей.
Решение . Смените расширение на .txt, чтобы при открытии документа включился Мастер импорта. Когда дойдёте до Шага 3, смените формат столбцов с числами, которые начинаются нулями, на текстовый.
Часть значений выглядит как даты
Признак . В виде дат отображаются значения, в оригинале представляющие собой обычный текст или числа.
Причина . Общий формат предполагает превращение в даты значений, напоминающих таковые для Excel. Если в CSV-документе будет отдельное значение вроде may12 , то в Excel-листе оно отобразится как дата.
Решение . Сходно с таковым в предыдущем случае. Смените расширение на .txt, в Мастере смените формат значений, конвертируемых в даты, на текстовый.
Если же, напротив, нужно показывать содержимое определённого столбца как даты, установите для него формат Дата . Есть несколько разновидностей формата даты, потому выберите требуемую из перечня.
Как импортировать в Excel множественные CSV-файлы
В Excel возможно открыть сразу несколько CSV-файлов.
- Нажмите Файл > Открыть и выберите опцию Текстовые файлы из выпадающего листа внизу.
- Чтобы выбрать несколько файлов, расположенных рядом, сначала выберите первый из них, затем нажмите Shift и кликните на последний. Кроме выбранных файлов, выделятся все файлы между ними.
- Кликните Открыть .
Недостаток этого метода в том, что каждый выбранный файл будет открыт в Excel отдельно. Переход от одного документа к другому может увеличивать временные затраты. Однако, затем возможно скопировать содержимое их всех в листы одной книги.
Объяснение было долгим, однако, теперь у Вас получится без особых затруднений открыть любой файл CSV в Excel. Если что-то кажется непонятным на первый взгляд, просто следуйте указанным шагам — и всё прояснится.
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 года, в котором описано все довольно толково. За неимением ничего большего, правильно придерживаться хотя бы RFC. Но для совместимости с Excel следует учесть его собенности.
Вот краткая выжимка рекомендаций RFC 4180 и мои комментарии в квадратных скобках:
- между строками — перевод строки CRLF [на мой взгляд, им не стоило ограничивать двумя байтами, т.е. как CRLF (0×0D, 0×0A), так и CR 0×0D]
- разделители — запятые, в конце строки не должно быть запятой,
- в последней строке CRLF не обязателен,
- первая строка может быть строкой заголовка (никак не помечается при этом)
- пробелы, окружающие запятую-разделитель, игнорируются.
- если значение содержит в себе CRLF, CR, LF (символы-разделители строк), двойную кавычку или запятую (символ-разделитель полей), то заключение значения в кавычки обязательно. В противном случае — допустимо.
- т.е. допустимы переводы строк внутри поля. Но такие значения полей должны быть обязательно закавычены,
- если внутри закавыченной части встречаются двойные кавычки, то используется специфический квотинг кавычек в CSV — их дублирование.
Вот в нотации ABNF описание формата:
Также при реализации формата нужно помнить, что поскольку здесь нет указателей на число и тип колонок, поскольку нет требования обязательно размещать заголовок, здесь есть условности, о которых необходимо не забывать:
- строковое значение из цифр, не заключенное в кавычки может быть воспринято программой как числовое, из-за чего может быть потеряна информация, например, лидирующие нули,
- количество значений в каждой строке может отличаться и необходимо правильно обрабатывать эту ситуацию. В одних ситуациях нужно предупредить пользователя, в других — создавать дополнительные колонки и заполнять их пустыми значениями. Можно определиться, что количество колонок задается заголовком, а можно добавлять их динамически, по мере импорта CSV,
- Квотить кавычки через «слэш» не по стандарту, делать так не надо.
- Поскольку типизации полей нет, нет и требования к ним. Разделители целой и дробной частей в разных странах разные, и это приводит к тому, что один и тот же CSV, сгенрированный приложением, в одном экселе «понимается», в другом — нет. Потому что Microsoft Office ориентируется на региональные настройки Windows, а там может быть что угодно. В России там указано, что разделитель — запятая,
- Если CSV открывать не через меню «Данные», а напрямую, то Excel лишних вопросов не задает, и делает как ему кажется правильным. Например, поле со значением 1.24 он понимает по умолчанию как «24 января»
- Эксель убивает ведующие нули и приводит типы даже тогда, когда значение указано в кавычках. Делать так не надо, это ошибка. Но чтобы обойти эту проблему экселя, можно сделать небольшой «хак» — значение начать со знака «равно», после чего поставить в кавычках то, что необходимо передать без изменения формата.
- У экселя есть спецсимвол «равно», который в CSV рассматривается как идентификатор формулы. То есть, если в CSV встретится =2+3, он сложит два и три и результат впишет в ячейку. По стандарту он это делать не должен.
Пример валидного CSV, который можно использовать для тестов:
точно такой же SCSV:
Первый файлик, который реально COMMA-SEPARATED, будучи сохраненным в .csv, Excel-ом не воспринимается вообще.
Второй файлик, который по логике SCSV, экселом воспринимается и выходит вот что:
- Учлись пробелы, окружающие разделители
- Последний столбец вообще толком не распознался, несмотря на то, что данные в кавычках. Исключение составляет строка с «Петровым» — там корректно распозналось 1,24.
- В поле индекс Excel «опустил» ведущие нули.
- в самом правом поле последней строки пробелы перед кавычками перестали указывать на спецсимвол
Если же воспользоваться функционалом импорта (Данные -> Из файла) и обозвать при импорте все поля текстовыми, то будет следующая картина:
С приведением типов сработало, но зато теперь не обрабатываются нормально переводы строк и осталась проблема с ведущими нулями, кавычками и лишними пробелами. Да и пользователям так открывать CSV крайне неудобно.
Есть эффективный способ, как заставить Excel не приводить типы, когда это нам не нужно. Но это будет CSV «специально для Excel». Делается это помещением знака «=» перед кавычками везде, где потенциально может возникнуть проблема с типами. Заодно убираем лишние пробелы.
И вот что случаеся, если мы открываем этот файлик в экселе:
Продукты HFLabs в промышленных объемах обрабатывают данные: адреса, ФИО, реквизиты компаний и еще вагон всего. Естественно, тестировщики ежедневно с этими данными имеют дело: обновляют тест-кейсы, изучают результаты очистки. Часто заказчики дают «живую» базу, чтобы тестировщик настроил сервис под нее.
Первое, чему мы учим новых QA — сохранять данные в первозданном виде. Все по заветам: «Не навреди». В статье я расскажу, как аккуратно работать с CSV-файлами в Excel и Open Office. Советы помогут ничего не испортить, сохранить информацию после редактирования и в целом чувствовать себя увереннее.
Материал базовый, профессионалы совершенно точно заскучают.
Что такое CSV-файлы
Формат 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, добрая душа, аккуратно разберет. Например, «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» выставляю в «». (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 не нужно создавать новый воркбук и принудительно запускать импорт, все само
- Кодировка — как в файле.
- «Разделитель» — точка с запятой. Естественно, если в файле разделителем выступает именно она.
- «Разделитель текста» — пустой (все то же, что в Excel).
- В разделе «Поля» кликаю в левый-верхний квадрат таблицы, подсвечиваются все колонки. Указываю тип «Текст».
Помимо Calc у нас в HFLabs популярен libreOffice, особенно под «Линуксом». И то, и другое для CSV применяют активнее, чем Excel.
Бонус-трек: проблемы при сохранении из Calc в .xlsx
Если сохраняете данные из Calc в экселевский формат .xlsx, имейте в виду — OO порой необъяснимо и масштабно теряет данные.
Белая пустошь, раскинувшаяся посередине, в оригинальном CSV-файле богато заполнена данными
Поэтому после сохранения я еще раз открываю файл и убеждаюсь, что данные на месте.
Если что-то потерялись, лечение — пересохранить из CSV в .xlsx. Или, если установлен Windows, импортнуть из CSV в Excel и сохранить оттуда.
После пересохранения обязательно еще раз проверяю, что все данные на месте и нет лишних пустых строк.
Если интересно работать с данными, посмотрите на наши вакансии. HFLabs почти всегда нужны аналитики, тестировщики, инженеры по внедрению, разработчики. Данными обеспечим так, что мало не покажется :)
Как создается CSV файл вообще? С запятыми или с запятой? Любые советы, по которым можно использовать?
В Windows это зависит от экрана настройки "Язык и региональные стандарты", где вы найдете разделитель List. Это приложения char Windows, которые ожидаются как разделитель CSV.
Конечно, это имеет эффект только в приложениях Windows, например Excel не будет автоматически разделять данные на столбцы, если файл не использует вышеупомянутый разделитель. Все приложения, использующие региональные настройки Windows, будут иметь такое поведение.
Если вы пишете программу для Windows, которая потребует импортировать CSV в другие приложения, и вы знаете, что разделитель списков, установленный для ваших целевых компьютеров, , , затем перейдите к нему, иначе я предпочитаю ; , поскольку он вызывает меньше проблем с десятичными точками, группирует цифры и не появляется в большом количестве текста.
Я бы сказал, что придерживаюсь запятой, поскольку она широко признана и понята. Не забудьте указать ваши ценности и избежать ваших котировок.
И еще до этого C в CSV всегда стоял за Comma, а не для semiColon: (
Жаль, что Microsoft продолжает игнорировать это и все еще придерживается чудовищности, которую они превратили в десятилетия назад (да, я признаю, это было до создания RFC).
- Одна запись в строке, если в цитированном тексте не встречается новая строка (см. ниже).
- COMMA как разделитель столбцов. Никогда не используйте точку с запятой.
- PERIOD как десятичная точка в числах. Никогда не запятая.
- Текст, содержащий запятые, периоды и/или новые строки, заключенные в "двойные кавычки".
Только в том случае, если текст заключен в двойные кавычки, такие кавычки помечены в тексте, который вырвался удвоением. Эти примеры представляют собой те же три поля:
1 ", этот текст содержит" "кавычки" "", 3
1, этот текст содержит "кавычки", 3
В стандарте не указаны значения даты и времени, лично я стараюсь придерживаться формата ISO 8601, чтобы избежать путаницы день/месяц/год – месяц/день/год.
- Проблема экспорта поисковых запросов (ПЗ) из Google вебмастер
- CSV с разделителем запятая в UTF-8
- Проблема с кодировкой
- Разделитель запятая в CSV
- То, что помогло
Проблема экспорта ПЗ из Google вебмастер
Многие из нас используют Google инструмент для веб-мастеров только для добавления сайта. Это неправильно, здесь есть масса полезной информации, например список поисковых запросов, по которым пользователи находят и заходят на сайт. Смотрите отчет: Поисковый трафик > Поисковые запросы – предварительно выбрав нужный сайт в списке.
Здесь же есть и экспорта данных в CSV-формате, с возможностью его открытия в Google Таблицы (онлайн аналог Excel) . Ищите кнопку «Загрузить эту таблицу». К слову, количество отображаемых запросов на странице не влияет на полноту экспортируемых данных.
Проблема в том, что в CSV-файле используется разделитель запятой и кодировка UTF-8. Так что даже в Google Таблицы, вместо кириллицы, вы получите только набор вопросов.
Другими словами, нам нужно изменить кодировку на ANSI. А для открытия файла CSV в Excel заменить и разделитель запятой (,) на символ точки с запятой (;) .
CSV с разделителем запятая в UTF-8
Проблема с кодировкой
У меня на картинке показан обратный процесс: преобразования из 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, правда стоит учесть его ограничение на объём загружаемого файла. На этом у меня всё. Спасибо за внимание. Удачи!
Сейчас в инете дофига различный csv конверторов, которые всё это понимают и настраивают. Да и софта такого рода хватает.
23 января 2014 г., 13:21 Удалить комментарий
@Максим безусловно, вариантов решения данной проблемы существует достаточно много. В тоже время, практика показывает, что люди склонный использовать то, что есть под рукой и чем оно проще тем лучше. В случае с Normalization CSV мы имеем не столько csv конвертор, сколько нормализатор, который работает исходя из особенностей экспорта данных онлайн сервисов, в частности Google инструмента для веб-мастеров.
23 января 2014 г., 15:25 Удалить комментарий
@Константин Кирилюк если судить по показателям соцкнопочек, то люди выбирают не самые простые решения и отдают предпочтение перекодированию, переименовыванию и мастертекстовованию 🙂
29 января 2014 г., 19:10 Удалить комментарий
@Максим ну, не всё так сразу. К тому же популяризацией своего сервиса я не занимался, да и не стремлюсь. несколько опасаюсь нагрузок. Так что пусть используют вот такие, далеко не простые решения, а кому надо могут воспользоваться и сервисом.
30 января 2014 г., 10:42 Удалить комментарий
Заметил траблу с Normalization CSV. Если в CSV файле присутствует символ бесконечности ∞ то на нём всё и стопорится, по крайней мере если делать смену кодировки из UTF-8 в ANSI.
1 февраля 2014 г., 5:21 Удалить комментарий
@Максим да, была такая проблема. Пытался и так и эдак, но пришлось заменить этот символ на знак вопроса. Это самый оптимальный вариант, который я вижу на данный момент. Как я понял проблема в iconv мутках.
1 февраля 2014 г., 6:09 Удалить комментарий
28 августа 2014 г., 11:52 Удалить комментарий
Помимо ‘,’ в Разделитель элементов списка в разделе Числа – Разделитель целой и дробной части поставьте ‘.’ и все заработает
3 сентября 2014 г., 11:52 Удалить комментарий
Константин, большое спасибо
25 октября 2015 г., 22:23 Удалить комментарий
Помимо ‘,’ в Разделитель элементов списка в разделе Числа – Разделитель целой и дробной части поставьте ‘.’ и все заработает
вот это очень помогло. спасибо анониму от анонима! большое спасибо!
12 августа 2016 г., 16:36 Удалить комментарий
чувак, отличная публикация. благодарю
1 сентября 2016 г., 18:31 Удалить комментарий
Огромное спасибо, статья очень выручила! 🙂
25 сентября 2016 г., 12:27 Удалить комментарий
15 декабря 2016 г., 22:31 Удалить комментарий
22 февраля 2017 г., 12:05 Удалить комментарий
Помог понять (потому что подробно изложил)! Спасибо.
7 мая 2017 г., 7:32 Удалить комментарий
В Notepad++ я записал макрос с такими действиями:
1. Найти все запятые , и заменить на точку с запятой ;
2. Найти все точки . и заменить их на запятые ,
3. Сохранить файл
Теперь любой "некирилличный" CSV преобразовывается одной командой и потом нормально открывается в Excel без изменений региональных настроек.
Файлы CSV автоматически связаны с Excel, но когда я их открываю, все строки находятся в основном в первом столбце, например:
Вероятно, потому, что, когда Excel думает «значения, разделенные запятыми», он фактически ищет какой-либо другой разделитель (я думаю, что это точка с запятой, но это не важно).
Теперь, когда я уже открыл этот файл в Excel, есть ли кнопка или что-то сказать «повторно открыть этот файл и использовать запятую в качестве разделителя»?
Я знаю, что могу импортировать данные в новый рабочий лист и т. д., но я прошу конкретно о помощи в ситуации, когда у меня уже есть файл CSV с запятыми, и я хочу открыть его в Excel без создания новой книги или преобразование исходного файла.
(Примечание. Мой компьютер использует чешские настройки формата, которые форматируют такие числа: 1 000,00 , т. е. запятая используется как разделитель десятичных чисел и пространство в качестве разделителя тысяч. Разделитель по умолчанию в системных настройках – ; .)
- Я изменил систему разделитель списков на запятую в Region – > Дополнительные настройки
- В Excel 2013, я пошел в Options – > Advanced и unchecked Использовать системные разделители (в разделе «Параметры редактирования», который является первым разделом)
- Я установил десятичный разделитель в Excel на . , а разделитель тысяч – на , (разделитель тысяч, вероятно, не имеет значения, но я хотел бы сделать его совместимым с форматированием в США)
Альтернативой шагам 2 + 3 будет изменение этих параметров в системных настройках (шаг 1), но я обычно хочу, чтобы номера были отформатированы в соответствии с чешским языком.
Недостатки : в Excel мне нужно ввести десятичные числа, используя локаль US, т. е. используя точку вместо запятой. Это кажется немного неестественным, но приемлемым компромиссом для меня. К счастью, клавиша запятой на моей цифровой клавиатуре автоматически переключилась на точечный ключ (и только в Excel – другие приложения все еще выдают запятую).
CSV (Comma Separated Values) – распространённый формат для хранения табличных данных (числовых и текстовых) в виде простого текста. Этот формат файлов популярен и живуч благодаря тому, что огромное количество программ и приложений понимают CSV, хотя бы как альтернативный вариант файлового формата для импорта / экспорта. Более того, формат CSV позволяет пользователю заглянуть в файл и немедленно найти проблему с данными, если таковая имеется, изменить разделитель CSV, правила цитирования и так далее. Это возможно потому, что CSV – это простой текст, и даже не очень опытный пользователь, сможет легко его понять без специальной подготовки.
В этой статье мы изучим быстрые и эффективные способы экспорта данных из Excel в CSV и узнаем, как преобразовать файл Excel в CSV, сохранив без искажений все специальные и иностранные символы. Описанные в статье приёмы работают во всех версиях Excel 2013, 2010 и 2007.
Как преобразовать файл Excel в CSV
Если требуется экспортировать файл Excel в какое-либо другое приложение, например, в адресную книгу Outlook или в базу данных Access, предварительно преобразуйте лист Excel в файл CSV, а затем импортируйте файл .csv в другое приложение. Ниже дано пошаговое руководство, как экспортировать рабочую книгу Excel в формат CSV при помощи инструмента Excel – «Сохранить как».
Замечание: Все упомянутые форматы сохраняют только активный лист Excel.
Вот так рабочий лист Excel можно сохранить как файл CSV. Быстро и просто, и вряд ли тут могут возникнуть какие-либо трудности.
Экспортируем из Excel в CSV с кодировкой UTF-8 или UTF-16
Если на листе Excel содержатся какие-либо специальные или иностранные символы (тильда, ударение и подобные) или иероглифы, то преобразование листа Excel в CSV описанным выше способом не сработает.
Дело в том, что команда Сохранить как > CSV (Save as > CSV) исказит все символы, кроме ASCII (American Standard Code for Information Interchange). И если на листе Excel есть парные кавычки или длинные тире (перенесённые в Excel, например, из документа Word при копировании / вставке текста) – такие символы также будут искромсаны.
Простое решение – сохранить лист Excel как текстовый файл Unicode(.txt), и затем преобразовать его в CSV. Таким образом все символы, не входящие в ASCII, останутся в целости и сохранности.
Прежде чем двинуться дальше, позвольте мне кратко пояснить главные отличия между кодировками UTF-8 и UTF-16, чтобы в каждом индивидуальном случае Вы могли выбрать подходящий формат:
- UTF-8 – это более компактная кодировка, использующая для каждого символа от 1 до 4 байт. Чаще всего рекомендуется использовать этот формат, когда символы ASCII преобладают в файле, т.к. большинство таких символов требует 1 байт памяти. Ещё одно преимущество в том, что кодировка файла UTF-8, содержащего только символы ASCII, ничем не будет отличаться от такого же ASCII-файла.
- UTF-16 использует от 2 до 4 байт для хранения каждого символа. Учтите, что не во всех случаях файл UTF-16 требует больше места в памяти, чем файл UTF-8. Например, японские символы занимают от 3 до 4 байт в UTF-8 и от 2 до 4 байт в UTF-16. Таким образом, есть смысл использовать UTF-16, если данные содержат азиатские символы, в том числе Японские, Китайские и Корейские. Существенный недостаток этой кодировки в том, что она не полностью совместима с ASCII-файлами и требуются специальные программы для отображения таких файлов. Помните об этом, если планируете импортировать получившиеся файлы из Excel куда-то ещё.
Как преобразовать файл Excel в CSV UTF-8
Предположим, у нас есть лист Excel с иностранными символами, в нашем примере – это японские имена.
Чтобы экспортировать этот лист Excel в файл CSV, сохранив при этом все иероглифы, сделаем следующее:
Замечание: Не все простые текстовые редакторы полностью поддерживают символы Юникод, поэтому некоторые из них могут отображаться как прямоугольники. В большинстве случаев, это никак не повлияет на итоговый файл, и можно просто не обращать на это внимание или выбрать более продвинутый редактор, например, Notepad++.
- Так как в нашем текстовом Юникод файле в качестве разделителей используется символ табуляции, а мы хотим преобразовать его в CSV (разделители – запятые), то необходимо заменить символы табуляции на запятые.
Замечание: Если нет строгой необходимости получить файл именно с разделителями – запятыми, а нужен любой файл CSV, который Excel сможет понять, то этот шаг можно пропустить, так как Microsoft Excel отлично понимает файлы с разделителем – табуляцией.
- Если всё же нужен файл CSV (разделители – запятые), то выполните в Блокноте следующие действия:
- Выделите символ табуляции, кликните по нему правой кнопкой и в контекстном меню нажмите Копировать (Copy), или просто нажмите Ctrl+C, как показано на рисунке ниже.
- Нажмите Ctrl+H, чтобы открылось диалоговое окно Заменить (Replace) и вставьте скопированный символ табуляции в поле Что (Find what). При этом курсор сместится вправо – это значит, что символ табуляции вставлен. В поле Чем (Replace with) введите запятую и нажмите Заменить все (Replace all).
В Блокноте результат будет приблизительно вот такой:
Замечание: Если Ваш файл предназначен для использования за пределами Excel и формат UTF-8 является обязательным требованием, то не совершайте на листе никаких изменений и не сохраняйте его снова в Excel, поскольку это может привести к проблемам с чтением кодировки. Если какая-то часть данных не отображается в Excel, откройте тот же файл в Блокноте и в нём внесите исправления в данные. Не забудьте снова сохранить файл в формате UTF-8.
Как преобразовать файл Excel в CSV UTF-16
Экспортировать в файл CSV UTF-16 намного быстрее и проще, чем в UTF-8. Дело в том, что Excel автоматически применяет формат UTF-16 при сохранении файла как Текст Юникод (Unicode Text).
Для этого сохраняем файл при помощи инструмента Сохранить как (Save as) в Excel и затем в Проводнике Windows изменяем расширение созданного файла на .csv. Готово!
Если нужен файл CSV с запятой или точкой с запятой в качестве разделителя, замените все символы табуляции на запятые или точки с запятой соответственно в Блокноте или в любом другом текстовом редакторе на свой выбор (ранее в этой статье есть подробная инструкция, как это делается).
Другие способы преобразования файлов Excel в CSV
Описанные выше способы экспорта данных из Excel в CSV (UTF-8 и UTF-16) универсальны, т.е. подойдут для работы с любыми специальными символами и в любой версии Excel от 2003 до 2013.
Существует множество других способов преобразования данных из формата Excel в CSV. В отличие от показанных выше решений, эти способы не будут давать в результате чистый UTF-8 файл (это не касается OpenOffice, который умеет экспортировать файлы Excel в несколько вариантов кодировки UTF). Но в большинстве случаев получившийся файл будет содержать правильный набор символов, который далее можно безболезненно преобразовать в формат UTF-8 при помощи любого текстового редактора.
Преобразуем файл Excel в CSV при помощи Таблиц Google
Как оказалось, можно очень просто преобразовать файл Excel в CSV при помощи Таблиц Google. При условии, что на Вашем компьютере уже установлен Google Drive, выполните следующие 5 простых шагов:
Совет: Если файл Excel относительно небольшой, то для экономии времени можно перенести из него данные в таблицу Google при помощи копирования / вставки.
В завершение откройте созданный CSV-файл в любом текстовом редакторе, чтобы убедиться, что все символы сохранены правильно. К сожалению, файлы CSV, созданные таким способом, не всегда правильно отображаются в Excel.
Сохраняем файл .xlsx как .xls и затем преобразуем в файл CSV
Для этого способа не требуется каких-либо дополнительных комментариев, так как из названия уже всё ясно.
Это решение я нашёл на одном из форумов, посвящённых Excel, уже не помню, на каком именно. Честно говоря, я никогда не использовал этот способ, но, по отзывам множества пользователей, некоторые специальные символы теряются, если сохранять непосредственно из .xlsx в .csv, но остаются, если сначала .xlsx сохранить как .xls, и затем как .csv, как мы делали в начале этой статьи.
Так или иначе, попробуйте сами такой способ создания файлов CSV из Excel, и если получится, то это будет хорошая экономия времени.
Сохраняем файл Excel как CSV при помощи OpenOffice
OpenOffice – это пакет приложений с открытым исходным кодом, включает в себя приложение для работы с таблицами, которое отлично справляется с задачей экспорта данных из формата Excel в CSV. На самом деле, это приложение предоставляет доступ к большему числу параметров при преобразовании таблиц в файлы CSV (кодировка, разделители и так далее), чем Excel и Google Sheets вместе взятые.
Просто открываем файл Excel в OpenOffice Calc, нажимаем Файл > Сохранить как (File > Save as) и выбираем тип файла Текст CSV (Text CSV).
На следующем шаге предлагается выбрать значения параметров Кодировка (Character sets) и Разделитель поля (Field delimiter). Разумеется, если мы хотим создать файл CSV UTF-8 с запятыми в качестве разделителей, то выбираем UTF-8 и вписываем запятую (,) в соответствующих полях. Параметр Разделитель текста (Text delimiter) обычно оставляют без изменения – кавычки («). Далее нажимаем ОК.
Таким же образом для быстрого и безболезненного преобразования из Excel в CSV можно использовать ещё одно приложение – LibreOffice. Согласитесь, было бы здорово, если бы Microsoft Excel предоставил возможность так же настраивать параметры при создании файлов CSV.
В этой статье я рассказал об известных мне способах преобразования файлов Excel в CSV. Если Вам знакомы более эффективные методы экспорта из Excel в CSV, расскажите об этом в комментариях. Благодарю за внимание!
Читайте также: