Формат csv как создать

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

Shopify. Как создать файл CSV для импорта товаров

Загрузка необходимого программного обеспечения


  1. Прежде всего, установите программу, необходимую для редактирования файла .CSV. Мы советуем Вам использовать программу OpenOffice Calc.

  2. Перейдите по этой ссылке для того чтобы скачать программу OpenOffice: https://www.openoffice.org/.

  3. Нажмите на ссылку Я хочу скачать Apache OpenOffice (I want to download Apache OpenOffice).


  4. На следующей странице выберите ваш язык операционной системы, затем нажмите на кнопку Скачать файл полной установки (Download full installation):

    shopify_how_to_create_csv_1

  5. В следующем окне нажмите на кнопку Сохранить файл (Save File):

    shopify_how_to_create_csv_2


  6. Сделав это, перейдите в папку, в которую Вы скачали файл, и выполните установку программы OpenOffice.

  7. Выберите, добавить/импортировать Простые товары или Товары с вариантами:

    1. Простой товар (Не содержит вариан.
      9;уя эту ссылку.

      Обратите внимание: Вам нужно лишь добавить значения полей типа Предложение (handle) и ссылки для дополнительных изображений.

    2. Товары с вариантами (Product With Variants) — загружая товары с вариантами, заполните все поля в файле-примере shopify_example_variants.csv.


      Вы можете пропустить поля Заголовок (Title), Основное содержимое (HTML) (Body (HTML)), Поставщик (Vendor) и Теги (Tags) и заполнить все остальные данные про варианты товаров, а также указать ссылки для изображений.


info.template-help.com

Программы для работы с CSV

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

Способ 1: Microsoft Excel

Рассмотрим, как запустить CSV в популярном текстовом процессоре Эксель, который входит в пакет Microsoft Office.

  1. Запустите Excel. Перейдите во вкладку «Файл».
  2. Переход во вкладку Файл в программе Microsoft Excel

  3. Перейдя в эту вкладку, нажимайте «Открыть».

    Переход в окно открытия файла в программе Microsoft Excel

    Вместо этих действий можно прямо находясь на листе применить Ctrl+O.

  4. Появляется окошко «Открытие документа». С его помощью переместитесь туда, где размещен CSV. Обязательно выберете из списка форматов значение «Текстовые файлы» или «Все файлы». Иначе искомый формат просто не отобразится. Затем отметьте данный объект и нажимайте «Открыть», что вызовет «Мастер текстов».

Окно открытия документа в программе Microsoft Excel

Существует ещё один метод перехода в «Мастер текстов».

  1. Переместитесь в раздел «Данные». Нажимайте на объект «Из текста», размещенный в блоке «Получение внешних данных».
  2. Переход к получению внешних данных из текста во вкладке Данные в программе Microsoft Excel

  3. Появляется инструмент «Импорт текстового файла». Так же, как и в окошке «Открытие документа», тут требуется перейти в область расположения объекта и отметить его. Выбирать форматы не нужно, так как при использовании этого инструмента объекты, содержащие текст, будут отображаться. Кликайте «Импорт».
  4. Окно импорт текстового файла в программе Microsoft Excel

  5. Запускается «Мастер текстов». В первом его окошке «Укажите формат данных» ставьте радиокнопку в положение «С разделителями». В области «Формат файла» должен стоять параметр «Юникод (UTF-8)». Нажимайте «Далее».

  6. Первое окно Мастера текстов в программе Microsoft Excel

  7. Теперь необходимо выполнить очень важный шаг, от которого будет зависеть корректность отображения данных. Требуется указать, что именно считается разделителем: точка с запятой (;) или запятая (,). Дело в том, что в разных странах в этом плане применяются различные стандарты. Так, для англоязычных текстов чаще применяется запятая, а для русскоязычных – точка с запятой. Но бывают и исключения, когда разделители применяются наоборот. Кроме того, в очень редких случаях в качестве разделителей используются другие знаки, например волнистая линия (~).

    Поэтому пользователь сам должен установить, служит ли в данном случае конкретный символ разделителем или является обычным знаком пунктуации. Это он может сделать, взглянув на текст, который отображается в области «Образец разбора данных» и основываясь на логике.

    Текст в окне Мастера текстов в программе Microsoft Excel

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


  8. Установка символа-разделителя в окне Мастера текстов в программе Microsoft Excel

  9. После этого открывается окно, в котором, выделив конкретный столбец в области «Образец разбора данных», можно назначить ему формат для корректности отображения информации в блоке «Формат данных столбца» путем переключения радиокнопки между следующими положениями:
    • пропустить столбец;
    • текстовый;
    • дата;
    • общий.

    После выполнения манипуляций нажимайте «Готово».

  10. Установка форматов данных в окне Мастера текстов в программе Microsoft Excel

  11. Появляется окошко, в котором спрашивается, где именно расположить на листе импортируемые данные. Путем переключения радиокнопки это можете сделать на новом или уже имеющемся листе. В последнем случае также можно задать точные координаты расположения в соответствующем поле. Чтобы не вписывать их вручную, достаточно поставить курсор в это поле, а затем выделить на листе ту ячейку, которая станет левым верхним элементом массива, где будут добавлены данные. После установки координат жмите «OK».
  12. Установка координат расположения данных в программе Microsoft Excel

  13. Содержимое объекта отобразится на листе Эксель.

Содержимое файла CSV отображено на листе в программе Microsoft Excel

Урок: Как запустить CSV в Экселе

Способ 2: LibreOffice Calc

Запускать CSV умеет и другой табличный процессор – Calc, входящий в сборку LibreOffice.

  1. Запустите LibreOffice. Щелкайте «Открыть файл» или воспользуйтесь Ctrl+O.

    Переход в окно открытия файла в программе LibreOffice

    Также можете произвести переход через меню, нажав «Файл» и «Открыть…».

    Переход в окно открытия файла через верхнее горизонтальное меню в программе LibreOffice

    Кроме того, в окно открытия можно попасть и непосредственно через интерфейс Calс. Для этого, находясь в LibreOffice Calc, щелкайте по значку в виде папки или наберите Ctrl+O.

    Переход в окно открытия файла с помощью значка на панели инструментов в программе LibreOffice Calc

    Ещё один вариант предусматривает последовательный переход по пунктам «Файл» и «Открыть…».

  2. Переход в окно открытия файла через верхнее горизонтальное меню в программе LibreOffice Calc

  3. Использование любого из множества перечисленных вариантов приведет к появлению окна «Открыть». Переместитесь в нем в место нахождения CSV, отметьте его и жмите «Открыть».

    Окно открытия файла в программе LibreOffice

    Но можно даже обойтись без запуска окна «Открыть». Для этого следует перетянуть CSV из «Проводника» в ЛибреОфис.

  4. Перетягивание файла CSV из Проводника Windows в окно программы LibreOffice

  5. Появляется инструмент «Импорт текста», являющийся аналогом «Мастера текстов» в Экселе. Преимущество состоит в том, что в этом случае не придется перемещаться между различными окнами, выполняя настройки импорта, так как все необходимые параметры расположены в одном окошке.

    Сразу перейдите к группе настроек «Импорт». В области «Кодировка» выбирайте значение «Юникод (UTF-8)», если там отображается иное. В области «Язык» выберите язык текста. В области «Со строки» нужно указать, с какой именно строчки следует начинать импорт содержимого. В большинстве случаев в этот параметр изменение вносить не нужно.

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

    «Другие параметры» оставляем без изменений.

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

  6. Окно импорт текста в программе LibreOffice Calc

  7. Содержимое отобразится через интерфейс ЛибреОфис Кальк.

Содержимое файла CSV отображено на листе в программе LibreOffice

Способ 3: OpenOffice Calc

Просмотреть CSV можете с помощью ещё одного табличного процессора — OpenOffice Calc.

  1. Запустите ОупенОфис. В главном окне нажимайте «Открыть…» или используйте Ctrl+O.

    Переход в окно открытия файла в программе OpenOffice

    Также можете использовать меню. Для этого перейдите по пунктам «Файл» и «Открыть…».

    Переход в окно открытия файла через верхнее горизонтальное меню в программеOpenOffice

    Как и при использовании метода с предыдущей программой, добраться до окна открытия объекта можно прямо через интерфейс Кальк. В этом случае нужно нажать на иконку в образе папки или применить все то же Ctrl+O.

    Переход в окно открытия файла с помощью значка на панели инструментов в программе OpenOffice Calc

    Также можете использовать меню, перейдя в нем по позициям «Файл» и «Открыть…».

  2. Переход в окно открытия файла через верхнее горизонтальное меню в программе OpenOffice Calc

  3. В появившемся окне открытия перейдите в область размещения CSV, выделите этот объект и жмите «Открыть».

    Окно открытия файла в программе OpenOffice

    Можно обойтись и без запуска этого окна, просто перетянув CSV из «Проводника» в ОупенОфис.

  4. Перетягивание файла CSV из Проводника Windows в окно программы OpenOffice

  5. Любое из множества описанных действий приведет к активации окошка «Импорт текста», которое очень похоже и по внешнему виду, и по функционалу на инструмент с аналогичным наименованием в LibreOffice. Соответственно и действия производите точно такие же. В полях «Кодировка» и «Язык» выставляйте «Юникод (UTF-8)» и язык текущего документа соответственно.

    В блоке «Параметра разделителя» ставьте радиокнопку около пункта «Разделитель», после чего отметьте флажком тот пункт («Точка с запятой» или «Запятая»), который соответствует типу разделителя в документе.

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

  6. Окно импорт текста в программе OpenOffice Calc

  7. Данные будут успешно отображены через интерфейс ОупенОфис Кальк.

Содержимое файла CSV отображено на листе в программе OpenOffice Calc

Способ 4: Блокнот

Для редактирования можно применять обычный Блокнот.

  1. Запустите Блокнот. В меню щелкайте «Файл» и «Открыть…». Или можете применить Ctrl+O.
  2. Переход в окно открытия файла в программе Блокнот Windows

  3. Появляется окно открытия. Перейдите в нем в область нахождения CSV. В поле отображения форматов установите значение «Все файлы». Отметьте искомый объект. Затем жмите «Открыть».
  4. Окно открытия файла в программе Блокнот Windows

  5. Объект будет открыт, но, конечно, не в табличном виде, который мы наблюдали в табличных процессорах, а в текстовом. Тем не менее, в блокноте очень удобно редактировать объекты данного формата. Нужно просто учесть, что каждой строке таблицы соответствует строка текста в Блокноте, а столбцы разделены разделителями в виде запятых или точек с запятыми. Учитывая эти сведения, можно с легкостью вносить любые коррективы, меня текстовые значения, добавляя строки, убирая или добавляя разделители там, где это нужно.

Содержимое файла CSV отображено на листе в программе Блокнот Windows

Способ 5: Notepad++

Открывать можно и с помощью более продвинутого текстового редактора — Notepad++.

  1. Включите Notepad++. Щелкните в меню «Файл». Далее выбирайте «Открыть…». Также можете применить Ctrl+O.

    Переход в окно открытия файла через верхнее горизонтальное меню в программе Notepad++

    Ещё один вариант предполагает нажатие на панели по иконке в виде папки.

  2. Переход в окно открытия файла через иконку на панели инструментов в программе Notepad++

  3. Появляется окно открытия. В нем необходимо переместиться в ту область файловой системы, где расположен нужный CSV. После его выделения жмите «Открыть».
  4. Окно открытия файла в программе Notepad++

  5. Содержимое отобразится в Notepad++. Принципы редактирования те же, что и при применении Блокнота, но Нотепад++ предоставляет намного большее количество инструментов для различных манипуляций с данными.

Содержимое файла CSV отображено в программе Notepad++

Способ 6: Safari

Просмотреть содержимое в текстовом варианте без возможности его редактирования можно в браузере Safari. Большинство других популярных браузеров такую возможность не предоставляют.

  1. Запустите Сафари. Щелкайте «Файл». Далее жмите на «Открыть файл…».
  2. Переход в окно открытия файлов в браузере Safari

  3. Появляется окошко открытия. В нем требуется произвести перемещение в то место, где расположен CSV, который пользователь желает просмотреть. В обязательном порядке переключатель форматов в окошке необходимо установить в положение «Все файлы». Затем произведите выделение объекта с расширением CSV и нажимайте «Открыть».
  4. Окно открытия файлов в браузере Safari

  5. Содержимое объекта откроется в новом окошке Сафари в текстовом виде, как это было в Блокноте. Правда, в отличие от Блокнота, редактировать данные в Safari, к сожалению, не получится, так как можно будет только осуществлять просмотр.

Содержимое файла CSV отображено в браузере Safari

Способ 7: Microsoft Outlook

Некоторые объекты CSV представляют собой экспортированные из почтового клиента электронные письма. Их можно просматривать с помощью программы Microsoft Outlook, произведя процедуру импортирования.

  1. Запустите Аутлук. После открытия программы перейдите во вкладку «Файл». Затем щелкните «Открыть» в боковом меню. Далее жмите «Импорт».
  2. Переход к импорту файла в программе Microsoft Outlook

  3. Запускается «Мастер импорта и экспорта». В представленном перечне выбирайте «Импорт из другой программы или файла». Нажимайте «Далее».
  4. Окно мастера импорта и экспорта в программе Microsoft Outlook

  5. В следующем окне следует выбрать тип объекта для импорта. Если мы собираемся импортировать CSV, то необходимо выбрать позицию «Значения, разделенные запятыми (Windows)». Жмите «Далее».
  6. Выбор типа файла для импорта в окне мастера импорта и экспорта в программе Microsoft Outlook

  7. В следующем окошке жмите «Обзор…».
  8. Переход в окно выбора импортируемого файла в окне мастера импорта и экспорта в программе Microsoft Outlook

  9. Появляется окно «Обзор». В нем следует перейти в то место, где находится письмо в формате CSV. Обозначьте этот элемент и нажимайте «OK».
  10. Окно выбора файла для импорта в программе Microsoft Outlook

  11. Происходит возврат в окошко «Мастера импорта и экспорта». Как можете заметить, в области «Файл для импорта» был добавлен адрес на место расположения объекта CSV. В блоке «Параметры» настройки можно оставить по умолчанию. Жмите «Далее».
  12. Адрес файла CSV отобразился в окне мастера импорта и экспорта в программе Microsoft Outlook

  13. Затем нужно отметить ту папку в почтовом ящике, в которую вы хотите поместить импортируемую корреспонденцию.
  14. Выбор папки для импортирования в окне мастера импорта и экспорта в программе Microsoft Outlook

  15. В следующем окне отобразится наименование действия, которое будет выполнено программой. Тут достаточно нажать «Готово».
  16. Завершение работы в окне мастера импорта и экспорта в программе Microsoft Outlook

  17. После этого, чтобы просмотреть импортированные данные переместитесь во вкладку «Отправка и получение». В боковой области интерфейса программы выделите ту папку, куда было импортировано письмо. Затем в центральной части программы появится список писем, находящихся в данной папке. Достаточно щелкнуть по нужному письму дважды левой кнопкой мыши.
  18. Переход к просмотру импортированных данных в программе Microsoft Outlook

  19. Импортированное из объекта CSV письмо будет открыто в программе Аутлук.

Импортированное письмо открыто в программе Microsoft Outlook

Стоит, правда, заметить, что данным способом можно запустить далеко не все объекты формата CSV, а только письма, структура которых отвечает определенному стандарту, а именно содержащие поля: тема, текст, адрес отправителя, адрес получателя и др.

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

lumpics.ru

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-ом не воспринимается вообще.

Формат csv как создать

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

Формат csv как создать

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

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

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

Формат csv как создать

С приведением типов сработало, но зато теперь не обрабатываются нормально переводы строк и осталась проблема с ведущими нулями, кавычками и лишними пробелами. Да и пользователям так открывать 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 как создать

Резюмирую.

Чтобы сгенерировать такой 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

habr.com

Создание CSV-файла импорта

Создать CSV-файл можно с помощью любого текстового редактора или соответствующего приложения, например Microsoft Office Excel. Отформатируйте файл, как описано далее в этом разделе и сохраните его с расширением CSV или TXT.

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

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

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

Формат CSV-файла

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

Name,EmailAddress,FirstName,LastName,Password adamsta0109,terrya@contoso.edu,Terry,Adams,1091990 beebeab0211,annb@contoso.edu,Ann,Beebe,2111991 cannocc0328,chrisc@contoso.edu,Chris,Cannon,3281986 

Столбцы в CSV-файле

Один и тот же атрибут в каждой строке образует столбец. В этом примере имена столбцов совпадают с атрибутами в строке заголовков. В данном примере пять столбцов: Name, EmailAddress, FirstName, LastName и Password. Например, столбец EmailAddress содержит адрес электронной почты для каждого нового пользователя: terrya@contoso.edu, annb@contoso.edu и chrisc@contoso.edu.

Тот же CSV-файл в приложении Excel.

Пример CS-файла импорта

Кодировка файла

Если CSV-файл содержит знаки, не входящие в ASCII, или специальные символы, сохраните его в кодировке UTF-8 или другой кодировке Юникода. В зависимости от приложения сохранить CSV-файл в кодировке UTF-8 или другой кодировке Юникода может оказаться проще, если язык системы соответствует языку, используемому в CSV-файле.

В начало страницы

Обязательные атрибуты

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

Примечание.   Вводить атрибуты следует именно так, как они представлены. Атрибуты не должны содержать пробелов. Это должно быть одно слово. Например, First Name является недопустимым. Следует ввести FirstName.

Атрибут

Описание

Имя

Name указывает идентификатор пользователя. Значение Name должно быть уникальным в пределах домена.

Важно!   Значение атрибута Name используется в качестве отображаемого имени в списке почтовых ящиков в панели управления Exchange и общей адресной книге, если не включен атрибут DisplayName, являющийся необязательным.

EmailAddress

EmailAddress указывает адрес электронной почты нового пользователя. Он также используется для создания соответствующего идентификатора Windows Live ID. Значение EmailAddress должно быть уникальным в пределах домена.

FirstName

FirstName указывает имя пользователя.

LastName

LastName указывает фамилию пользователя.

Password

Password — исходный пароль, назначенный идентификатору Windows Live ID, который создается для пользователя почтового ящика.

Если пользователи организации Live@edu должны сменить пароли при первом входе в учетную запись, используйте атрибут ForceChangePassword.

Примечание.   Параметр требования изменения паролей недоступен для организаций, система электронной почты в которых основана на Microsoft Online.

В начало страницы

Необязательные атрибуты

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

Атрибут

Описание

DisplayName

DisplayName указывает способ отображения имени пользователя в адресной книге в списке почтовых ящиков в панели управления Exchange. Если при импорте новых пользователей или при использовании пустого значения атрибут DisplayName не включен, значение атрибута Name используется для DisplayName.

CustomAttributeN, где N — целое число от 1 до 15.

Атрибуты CustomAttributeN используются для хранения сведений о пользователях, например является ли пользователь студентом, преподавателем или выпускником, или для хранения альтернативного адреса электронной почты. Атрибуты CustomAttributeN не отображаются в панели управления Exchange и общей адресной книге. Для просмотра атрибутов CustomAttributeN, назначенных пользователю, служит Windows PowerShell.

EvictEASI

Если значение атрибута EvictEASI равно 1, то для нового пользователя используется неуправляемый Windows Live ID, указанный в столбце EmailAddress. Неуправляемый Windows Live ID связывается с новым почтовым ящиком; все имеющиеся параметры, включая пароль и баллы продуктов, сохраняются. Идентификатор Windows Live ID при этом переводится в состояние принудительного переименования. Пользователь сможет войти в систему, используя этот идентификатор Windows Live ID и соответствующий пароль, но тут же получит запрос на переименование идентификатора Windows Live ID. Пользователь должен указать адрес электронной почты, не входящий в облачный домен. Дополнительные сведения см. в разделе Импорт или исключение существующих идентификаторов Windows Live ID.

ForceChangePassword

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

Примечание.   Этот атрибут могут использовать только организации Live@edu. При включении этого атрибута в CSV-файл импорта в организации Microsoft Online процесс импорта завершится ошибкой.

ImportEASI

Если значение атрибута ImportEASI равно 1, то для нового пользователя используется неуправляемый Windows Live ID, указанный в столбце EmailAddress. Идентификатор Windows Live ID и все существующие параметры сохраняются. Этот идентификатор сопоставляется с новым почтовым ящиком, созданным в ходе импорта. Дополнительные сведения см. в разделе Импорт или исключение существующих идентификаторов Windows Live ID.

MailboxPlan

План почтового ящика определяет общие параметры по умолчанию при создании новых пользователей. Атрибут MailboxPlan указывает планы почтовых ящиков для пользователей. Если атрибут MailboxPlan не задан, используется план почтового ящика организации по умолчанию.

Чтобы просмотреть список планов почтового ящика в организации, введите следующую команду:Get-MailboxPlan | FL DisplayName

Дополнительные сведения о планах почтовых ящиков см. в разделе Планы почтовых ящиков для Outlook Live.

City

City указывает город пользователя в адресной книге.

Company

Company указывает название организации пользователя в адресной книге.

CountryorRegion

CountryorRegion указывает название страны или региона, указываемое для пользователя в адресной книге. Для поиска допустимых значений для атрибута CountryorRegion в облачной электронной почте последовательно выберите пункты «Параметры» > «Учетная запись» > «Изменить» > «Расположение контакта». Все допустимые значения для страны или региона представлены в раскрывающемся меню.

Department

Department указывает отдел пользователя в адресной книге.

Fax

Fax указывает номер факса пользователя в адресной книге.

HomePhone

HomePhone указывает номер домашнего телефона пользователя в адресной книге.

Initials

Initials указывает инициалы пользователя в адресной книге.

MobilePhone

MobilePhone указывает номер мобильного телефона пользователя в адресной книге.

Примечания

Поле Notes указывает дополнительные сведения о пользователе в адресной книге.

Office

Office указывает комнату пользователя в адресной книге.

Phone

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

PostalCode

PostalCode указывает почтовый индекс пользователя в адресной книге.

StateorProvince

StateorProvince указывает область или край пользователя в адресной книге.

StreetAddress

StreetAddress указывает почтовый адрес пользователя в адресной книге.

Title

Title указывает должность пользователя в адресной книге.

WebPage

WebPage указывает веб-страницу пользователя в адресной книге.

В начало страницы

Пример CSV-файла импорта

Используйте этот пример в качестве шаблона для создания своих CSV-файлов импорта. Нажмите кнопку «Скопировать код» и вставьте его в файл Excel или текстовый файл.

CSV-файл для управляемых пользователей

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

Name,EmailAddress,FirstName,LastName,Password adamsta0109,terrya@contoso.edu,Terry,Adams,1091990 beebeab0211,annb@contoso.edu,Ann,Beebe,2111991 cannocc0328,chrisc@contoso.edu,Chris,Cannon,3281986 desaipd0430,prashanthd@contoso.edu,Prashanth,Desi,4301989 ersanee0529,ebrue@contoso.edu,Ebru,Ersan,5291988 flipffo0628,florencef@contoso.edu,Florence,Flipo,6281989 garciadg0726,debrag@contoso.edu,Debra,Garcia,7271986 halbeph0826,pernilleh@contoso.edu,Pernille,Halberg,8261986 ilyinji0925,julial@contoso.edu,Julia,Ilyina,9251985 johnstj1024,tamaraj@contoso.edu,Tamara,Johnston,10241987 

msdn.microsoft.com


You May Also Like

About the Author: admind

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Adblock
detector