Как создать cvs файл из xml бесплатно

Обновлено: 03.07.2024


Продукты 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 не нужно создавать новый воркбук и принудительно запускать импорт, все само

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

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

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

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


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

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

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

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

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

Создаём XML-файл

XML-формат предназначен для хранения данных, которые могут пригодиться в работе некоторых программ, сайтов и поддержки определённых языков разметки. Создать и открыть файл с таким форматом не сложно. Это вполне можно сделать, даже если на компьютере не установлено какое-либо специализированное программное обеспечение.

Немного об XML

Создавать XML-файлы можно как при помощи специализированных программ, так и встроенным в Windows текстовым редактором. От вида используемого ПО зависит удобство написания кода и уровень его функциональности.

Способ 1: Visual Studio

Создание документа в MS Visual Studio

Создание XML-файла в MS Visual Studio

В только что созданном файле уже будет первая строка с кодировкой и версией. По умолчанию прописана первая версия и кодировка UTF-8, которые вы можете поменять в любое время. Дальше для создания полноценного XML-файла вам нужно прописать всё то, что было в предыдущей инструкции.

Способ 2: Microsoft Excel

Можно создать XML-файл и не прописывая код, например, при помощи современных версий Microsoft Excel, который позволяет сохранять таблицы с данным расширением. Однако нужно понимать, что в этом случае создать что-то более функциональное обычной таблицы не получится.

Такой способ больше подойдёт тем, кто не хочет или не умеет работать с кодом. Однако в этом случае пользователь может столкнуться с определёнными проблемами при перезаписи файла в XML-формат. К сожалению, проделать операцию преобразования обычной таблицы в XML можно только на самых новых версиях MS Excel. Чтобы это сделать, используйте следующую пошаговую инструкцию:

Заполняем таблицу Excel

Сохранение таблицы

Выбор места сохранения

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

    Создайте обычный текстовый документ с расширением TXT. Разместить его можно где угодно. Откройте его.

Создание XML-файла

<?xml version="1.0" encoding="utf-8"?>

Задаём кодировку

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

Готовый документ

XML-компиляторы должны обработать этот код в виде таблицы с одной колонкой, где указаны данные о неком Иване Иванове.

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

Закрыть

Мы рады, что смогли помочь Вам в решении проблемы.

Отблагодарите автора, поделитесь статьей в социальных сетях.

Закрыть

Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.


Поскольку XML имеет важное значение при разработке приложений, большинство современных фреймворков используют его для передачи данных (когда имеется большой файл XML, его нужно отредактировать и выполнить некоторые операции). Редакторы XML – это специализированные инструменты, использующие DTD и различные структуры, вроде схем и деревьев.

Рассмотрим наиболее популярные из них.

Oxygen

Oxygen – это кроссплатформенный редактор, написанный на Java. Он поддерживает несколько функций для редактирования документов:

  • проверку правильности формы XML;
  • валидацию по таким схемам, как DTD, W3C XML Schema, RELAX NG, Schematron, NRL и NVDL schemas.

Oxygen XML предлагает три подхода к редактированию документа XML:

  • Текстовый: вариант по умолчанию.
  • Вид сетки: документ XML форматируется в электронную таблицу, в которой левый столбец хранит элементы, комментарии и инструкции по обработке, а следующий столбец показывает атрибуты корневых элементов и каждого первого уникального дочернего элемента.
  • Авторское представление: предлагает формат WYSIWYM (то, что ты видишь, есть то, что ты имеешь в виду). Такой формат понятен и удобен человеку, при этом он сохраняет вложенность и семантику.

Emacs для XML


Emacs известен как мощный текстовый редактор, предпочитаемый разработчиками UNIX. Он может работать с XML не только на UNIX-платформах, но и в Windows, MS-DOS и OS X.

В Emacs существуют следующие режимы редактирования XML:

  • sgml-mode.el
  • PSGML
  • PSGMLx
  • nXMLMode
  • XML-poly
  • xml-lite.el
  • XML Authoring Environment (XAE)
  • XSL-Mode

nXMLMode – основной режим редактирования XML в Emacs. Он поддерживает schema-sensitive.

XML Notepad

XML Notepad – редактор для XML с открытым исходным кодом. Он поддерживает древовидное представление, вывод XSL в левой панели, текст ноды справа и окно отладки внизу.


Программа поставляется с редактируемым Tree View, которое содержит обновляемые имена и значения нод, обновляемые в текстовом представлении.

Поддерживается IntelliSense для автодополнения кода и поиска синтаксических ошибок. Также включены выражения XPath и XInclude. Редактор имеет хорошую производительность при работе с большими документами XML и проверяет XML-схемы на лету. В него включено средство просмотра HTML для изучения выходных данных преобразования XSLT.

Liquid XML Studio IDE


Liquid XML Studio IDE – XML-редактор, основанный на Windows и биндинге данных. Включает в себя Graphical XML Schema Editor, Graphical JSON Schema Editor, Graphical XML editor и редактор DTD. Он также поставляется с расширением пользовательского интерфейса для Microsoft Visual Studio через Visual Studio Industry Partner (VSIP).

Stylus Studio

Stylus Studio – эта IDE написана на C++ и распространяется на условиях проприетарной лицензии стоимостью от 99 долларов. Программа позволяет редактировать и преобразовывать XML-документы для электронного обмена данными(EDI), CSV и реляционные данные. Поддерживаются XQuery Editing, XQuery Mapping, XQuery Debugging.


Студия поддерживает три представления XML: просмотр текста, дерево и сетка. Древовидное представление используется для минимизации кода и раскраски синтаксиса. Оно полезно при редактировании больших файлов, а сетка выигрышно смотрится при выполнении вычислений, когда необходимо просмотреть свой документ XML в виде электронной таблицы.

Komodo

Помимо поддержки XML, Komodo умеет работать с HTML, Perl, Ruby, Python, Java и т. д. Это простой, но функциональный инструмент. Автодополнение кода функционирует великолепно, макет лаконичен и интуитивно понятен. Софт имеет платную версию под названием Komodo IDE, включающую в себя модульное тестирование, синхронизацию нескольких рабочих станций и интеграцию с GitHub и BitBucket.


Komodo поддерживает закладки и метки, позаимствованные у Emacs.

Отслеживание изменений позволяет откатиться назад. Поле трекера позволяет управлять изменениями исходного кода (SCC), когда документ находится на стадии пересмотра. Если архив находится в SCC, то ядро трекера показывает изменения, сопоставленные с последним коммитом.

Редактор исходного кода Kate предлагает окно отладки, проводник и плагины. Среди них KTextEditor для редактирования тем, предоставляемых KSyntaxHighlighting. Он имеет возможность просмотра источников HTML, редактирования конфигурационных файлов и выполнения задач по расписанию.

Плагин проверки XML проверяет файл на наличие предупреждений и ошибок, которые появятся в окне Kate, а основанный на libxmlcalled плагин под названием «XML Completion» проверяет, следует ли документ правилам DTD.


NotePad ++


Notepad++ – это текстовый редактор с лицензией GPL. Он имеет хорошую производительность, потому как основан на компоненте редактирования Scintilla и написан на C++. Инструмент поддерживает подсветку синтаксиса, форматирование/минимизацию кода, а также незначительное автодополнение для разных языков программирования, сценариев и разметки.

К сожалению в редакторе нет интеллектуального автодополнения кода и проверки синтаксиса.

Notepad++ поставляется с основанным на libXML2 плагином XML Tools для поддержки набора полезных инструментов и редактирования XML-документов.

Для установки переходим в раздел Plugins -> Plugin Admin и находим «XML tools». Плагин обеспечивает проверку XML, XSD и DTD путем верификации формата и синтаксиса. Он поддерживает текущий XML Path и Xpath.

Это онлайн-едактор XML , предоставляющий различные сервисы:

  • XML Sitemap Editor: позволяет редактировать кастомные XML sitemap-ы сайтов, которые можно загрузить по URL-адресу или загрузить файл локально.
  • Online XML To Text Converter: преобразование XML в текстовые файлы.
  • Online XML Validator: проверка и валидация схемы на соответствие DTD.
  • XPath Editor: создание и оценка выражения XPath, а также проверка путей.

Плагин обеспечивает преобразование из XSD в XML, XML в Excel, JSON в XML, а также имеет редактор JSON и вьювер.

Adobe FrameMaker

Adobe FrameMaker – инструмент от Adobe для XML и DITA (Darwin Information Typing Architecture). Он содержит редактор WYSIWYG для XML-дизайна и обладает удобными сочетаниями клавиш для навигации.


Редактор имеет удобные для начинающих структурированные средства просмотра для нод и атрибутов XML-данных. Также он обеспечивает простое встраивание роликов из Youtube, CSS3, markdown и поддержку медиафайлов. Может быть использован в качестве PDF-редактора путем преобразования XML в DITA, который визуализируется в формат PDF.

XMLSpy

XMLSpy позиционируется как редактор JSON и XML со встроенным конструктором схем. Он поддерживает интеграцию с Visual Studio и Eclipse, а также имеет XPath builder, валидатор и отладчик.


Редактор может генерировать визуальные диаграммы из XML-данных.

Особенностью XMLSpy является валидация XML SmartFix, которая обнаруживает ошибки и автоматически применяет выбранные пользователем исправления.

ExtendsClass

ExtendsClass – это бесплатный набор инструментов для разработчиков, позволяющий сравнивать ноды XML и визуализировать семантические различия.


Инструмент XML diff выполняет семантическое сравнение пары «атрибут-значение» у каждого объекта. Сравнение затрагивает каждый узел в соответствии с его положением в массиве, а XML-строки сортируются и форматируются, чтобы найти семантические различия, а не только текстовые.

Editix

Editix – это качественный XML -редактор с открытым исходным кодом и множеством функций, вроде редактирования XSLT , отладчика, редактора XQuery , редактора сетки, редактора визуальных схем и множеством других. Основным интерфейсом этого редактора является глобальное вью. Мануал пользователя со скриншотами доступен по ссылке.


В последней версии предусмотрен бесплатный онлайн-инструмент – XPath tester. Разработчики также включили новую опцию – создание XML-документов из JSON и построение схемы из XML-документа с помощью редактора схем W3C.

Code Beautify


Code beautify отлично подходит для быстрого редактирования. Вы можете загрузить XML-файл по URL. Софт генерирует древовидное представление для XML, позволяет конвертировать XML в JSON, поддерживает проверку синтаксиса XML, минификацию и предоставляет онлайн-тестер XPath.

Online XML Tools

Online XML Tools – набор XML-инструментов, разработанных компанией B rowserling . Он поддерживает следующие функции: prettify, minify, validate , конвертацию XML в YAML, JSON TSV, Base64, CSV и наоборот.


Заключение

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

Итак, что же мы будем делать, для того, что бы научиться штамповать XML на основе вашего эталона? Опишу всё по порядку.

Имеется:
Какой то XML (xmlfile.xml), сохраненный в текстовом формате в файл. Ниже приведу текст:

Шаг 1. Создание XSD из XML.

  1. Утилита xsd.exe - создатель Microsoft.
  2. Утилита xsd2code.exe - стороннее приложение, которое умеет все тоже самое, что и xsd.exe, но доступно для скачивания напрямую (на данный момент стала платной с Trial периодом).
  3. Использование любых онлайн сервисов.

- Далее перейдя в папку:
C:\Program Files (x86)\Microsoft SDKs\Windows>

- Воспользуемся поиском, и найдем файл xsd.exe, после чего (что бы упростить себе работу), скопируем его в созданную в корне диска папку C:\xmltoxsd. Далее в эту же папку мы копируем наш xmlfile.xml и все готово к началу.


Отрываем "Командную строку" (Пуск -> "Выполнить" -> "cmd"), переходим в наш каталог и вызываем с параметрами по умолчанию xsd.exe, передавая наш xmlfile.xml параметром:


И видим, что рядом появился файл xmlfile.xsd с содержимым.


Вот и все! Этих действий достаточно, для создания примитивного XSD файла, с которым можно работать. Но стоит понимать, что сам xsd.exe, как и любая другая утилита, ничего не знает про типы ваших полей (поэтому почти всегда тип полей будет string), а так же о всех вариациях атрибутов и параметров. То есть, если у какого-то тега нет атрибута в вашей XML, тогда его и не будет в описании. Поэтому XML должен быть наиболее полным и в случае, если элемент может содержать несколько дочерних полей, лучше добавить как минимум два, что бы xsd.exe понял, что это коллекция.

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

Шаг 2. Создание Class из XSD.


После выполнения появится файл xmlfile.cs, содержимое которого приведено ниже в сжатом виде:



Как видите, для внутреннего элемента catalog был создан класс catalogBook, у которого поля соответствуют полям в XML, а поле Id помечено как атрибут. Xsd.exe корректно понял, что внутри catalog хранится коллекция книг, поэтому появилось свойство Items, для наполнения дочерней коллекции.
Замечание: xsd.exe не умеет добавлять комментарии к получившимся классам и полям. В описании XSD существует элемент под названием < xs:annotation > , который чаще всего содержит < xs:documentation >, внутри которого размещено описание поля. По идее, оно должно быть размещено в /// описании, но на текущий момент xsd.exe отказывается добавлять текст в описание, поэтому приходится прибегать к альтернативам, таким как xsd2code или онлайн сервисам.

Шаг 3. Сериализация объектов в XML.

Получившиеся классы у нас лежат в файле xmlfile.cs. Далее его содержимое или сам файл добавляем в проект Visual Studio, после чего можно с ним работать. Я создам демонстративный объекты книг, после чего сохраню в файл в формате XML.

После запуска и открытия Output.xml можно увидеть, что мы сохранили так, как мы хотели (Нижний файл - "Созданный кодом").


Как мы видим, форматирование было соблюдено, а данные были наполнены нами.

Читайте также: