Чем открыть XML: подбираем варианты на любой случай. Создание и редактирование XML-файла в Excel


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

1. Для начала необходимо в Excel создать и заполнить таблицу данных в соответствии со структурой данных. Используйте, пожалуйста, для этого пункт меню Вставка/Таблица .

2. Создадим схему файла XML. Для этого в текстовом редакторе введем следующие строки и и сохраним их в файле.

XHTML

0 0 0 0 Светлое Христово Воскресение. Пасха 0 0 -7 0 -7 Вход Господень в Иерусалим 1

0

0

0

0

Светлое Христово Воскресение. Пасха

0

0

-7

0

-7

Вход Господень в Иерусалим

1

3. Теперь откройте вкладку Разработчик , нажмите кнопку Источник и укажите файл-источник XML. При необходимости включите пункт меню Разработчик в Настройках Excel.

4. Осталось сопоставить элементы схемы и колонки таблицы, перетащив элементы на соответствующие заголовки колонок.

5. И последний шаг: экспортировать данные таблицы в XML-файл с помощью контекстного меню. Встаньте на любую ячейку таблицы, нажмите правую кнопку мыши, выберите XML/Экспорт… и сохраните XML-файл под нужным именем.

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

P.S. Зачем же я написал эту банальную заметку? Во-первых, чтобы самому не забыть, а во-вторых, думаю, что эта информация пригодится пользователям , начиная со следующей версии 0.6 ;-)

XML – расширяемый язык разметки. Он предназначен для создания документов, которые находят применение в сети. Он отличается от более распространённого и известного HTML только тем, что предоставляет возможность задавать собственные теги и применять их в дальнейшем. Чтобы работать с такими документами, редактировать их и вносить изменения, достаточно иметь начальные знания в программировании, он лёгок и прост в применении. Но прежде чем использовать такой документ, а тем более править его, необходимо знать, чем открыть XML .

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

Блокнот

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

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

Microsoft Word

Ещё один вариант чем открыть XML , в отличие от предыдущего способа, современные версии текстового процессора открывают файлы в удобочитаемом формате. То есть код располагается в виде таблицы удобной для восприятия. Благодаря лучшему обзору содержимого упрощается и процесс внесения правок в документ.

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

Notepad++

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

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

Microsoft Excel

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

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

Специализированные редакторы

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

  • XML Editor от Oxygen ;
  • Xsemmel ;
  • XMLSpear .

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

Чем открыть XML в онлайн

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

В этом случае пользователь может обратиться к онлайн-сервисам. Чем открыть XML через интернет?

Браузер

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

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

Xmlgrid.net

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

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

CodeBeautify

Ещё один онлайн-инструмент пригодный для работы с файлами данного формата. Прежде чем начать деятельность требуется пройти на сайт сервиса и выбрать тип документа, с которым планируется работа.

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

XSL Transformation

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

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

Представляющими собой данные на основе ввода описания с тегами или настроек программ. Открыть их для редактирования обычным двойным кликом не получается. Связано это с тем, что для ассоциации с расширением не установлено нужное приложение, которое применяется по умолчанию. Но если нужно получить удобочитаемый файл в виде таблицы с возможностью редактирования, можно открыть файл XML в Excel. При этом не нужны никакие конверторы, способные преобразовывать форматы между собой. Единственное замечание: такая возможность имеется только в версиях Office версии 2003 и выше.

Как открыть XML в Excel: способ первый

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

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

Как открыть формат XML в Excel: способ второй

Практически ничем не отличается от первого еще один предлагаемый метод. Файл XML в Excel можно открыть из файлового меню или использовать для этого быстрое сочетание Ctrl + O.

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

Открытие XML: способ третий

Есть еще несколько методов XML в Excel. Так, в версии программы 2016 года можно использовать меню верхней панели, где выбирается раздел «Данные», а затем нажимается кнопка получения внешних данных.

В выпадающем меню нужно просто выбрать раздел «Из других источников» и в новом меню использовать строку «Из импорта XML». После этого следует стандартная процедура поиска нужного файла с последующим открытием.

Редактирование, сохранение и экспорт

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

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

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

Если пользователю лень заниматься подобными преобразованиями, или в работе он использует версию Office ниже версии 2003, для открытия данного формата в виде таблицы придется использовать специальный конвертор. Таких программ сейчас предлагается достаточно много. В крайнем случае, если и это не подходит, без проблем можно обратиться к специализированным онлайн-сервисам, на которых формат будет изменен в течение пары десятков секунд. По окончании таких действий останется только загрузить готовый результат в формате XLS на жесткий диск, а потом открыть его в Excel. Впрочем, в большинстве случаев такие действия не требуются, поскольку в том же Office 2003 возможность прямого открытия (импорта) формата XML уже предусмотрена изначально. И думается, мало кто сегодня использует устаревшие офисные продукты Microsoft.

  • Yii
  • При разработке системы электронного документооборота потребовалось реализовать функции для экспорта данных в популярных форматах. В частности, в формате Microsoft Excel. Требования к экспорту были довольно простые – экспортировать данные с минимумом форматирования, т.е. никаких объединенных ячеек, игр со шрифтами и т.п. Форматы экспорта XLSX и Excel XML.

    В данном случае расскажу про Excel XML .

    Итак, в любой системе оперирующей табличными данными раной или поздно возникает потребность экспорта данных. Цели экспорта разные:

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

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

    Помимо описанных требований, понадобилось добавить сервисные функции:

    • Включение автофильтра
    • Сжатия файла в zip .

    Реализация

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

    Public function writeDocumentProperties($organization = null, $user = null) { fwrite($this->file, ""); if (!is_null($user)) { fwrite($this->file, "".$user->description.""); fwrite($this->file, "".$user->description.""); } $dt = new Datetime(); $dt_string = $dt->format("Y-m-d\TH:i:s\Z"); fwrite($this->file, "".$dt_string.""); fwrite($this->file, "".$dt_string.""); if (!is_null($organization)) fwrite($this->file, "".$organization->name.""); fwrite($this->file, "12.00"); fwrite($this->file, ""); }
    Правда, именно в этой функции используются сущности системы документооборота - organization (организация) и user (пользователь). Заменить эти сущности на, скажем, строковые значения, не проблема.

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

    Public function writeStyles() { fwrite($this->file, ""); //default style fwrite($this->file, ""); //Datetime style fwrite($this->file, ""); fwrite($this->file, ""); fwrite($this->file, ""); //Hyperlink style fwrite($this->file, ""); //Bold fwrite($this->file, ""); fwrite($this->file, ""); }

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

    Public function openWorksheet() { fwrite($this->file, ""); fwrite($this->file, strtr("

    ", array("{col_count}"=>$this->colCount, "{row_count}"=>$this->rowCount))); }
    Но вот запись рядов – процесс поинтереснее. Класс должен работать быстро и обрабатывать неограниченный объем данных, ведь записей может быть тысяч сто или даже миллион! Хочешь скорости – работай с памятью, хочешь неограниченный объем данных – работай с диском. Чтобы помирить требования, реализовал функции resetRow и flushRow.
    Первая – очищает текущий ряд, после чего его снова можно наполнять данными, а вторая – записывает текущий ряд в открытый файл на диск. Их совместное использование позволяет выдерживать баланс между скоростью и объемом используемой памяти.

    Public function resetRow() { $this->currentRow = array(); } public function flushRow() { fwrite($this->file, implode("", $this->currentRow)); unset($this->currentRow); }
    Каждая ячейка записывается функцией соответствующей типу данных, а именно appendCellxxx, где xxx – тип данных. Допустимые типы данных: Num, String, Real, DateTime, Date, Time, Link. Пример функции для записи числового значения:

    Public function appendCellNum($value) { $this->currentRow = "".$value.""; }
    После записи всех данных остается закрыть рабочий лист и рабочую книгу.

    Применение

    Использование описанного класса основано на экспорте данных с помощью провайдера CArrayDataProvider . Однако, предполагая, что объем экспортируемых данных может оказаться очень большим применен специальный итератор CDataProviderIterator , который перебирает возвращаемые данные по 100 записей (можно указать иное число записей).

    Public function exportExcelXML($organization, $user, &$filename) { $this->_provider = new CArrayDataProvider(/*query*/); Yii::import("ext.AlxdExportExcelXML.AlxdExportExcelXML"); $export = new AlxdExportExcelXML($filename, count($this->_attributes), $this->_provider->getTotalItemCount() + 1); $export->openWriter(); $export->openWorkbook(); $export->writeDocumentProperties($organization, $user); $export->writeStyles(); $export->openWorksheet(); //title row $export->resetRow(); $export->openRow(true); foreach ($this->_attributes as $code => $format) $export->appendCellString($this->_objectref->getAttributeLabel($code)); $export->closeRow(); $export->flushRow(); //data rows $rows = new CDataProviderIterator($this->_provider, 100); foreach ($rows as $row) { $export->resetRow(); $export->openRow(); foreach ($this->_attributes as $code => $format) { switch ($format->type) { case "Num": $export->appendCellNum($row[$code]); /*other types*/ default: $export->appendCellString(""); } } $export->closeRow(); $export->flushRow(); } //close all $export->closeWorksheet(); $export->closeWorkbook(); $export->closeWriter(); //zip file $export->zip(); $filename = $export->getZipFullFileName(); }
    В моем случае, каждый ряд записывается на диск, что, пока, является вполне приемлемым, но в будущем, возможно, потребует изменений. Например, будет разумно сохранять не каждый ряд, а каждый десяток или даже сотню рядов за раз. Тогда скорость экспорта увеличится.

    Скорость

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

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

    Важно:

    Экспорт данных XML (с не более 65 536 строк)

    Экспорт данных XML (для более 65 536 строк)

      Найдите разность общего количества строк в файле и числа 65 537. Обозначим это число как x.

      Удалите x строк с начала листа Excel.

      Экспортируйте лист в виде файла данных XML (смотрите в предыдущем разделе процедуры).

      Нажмите кнопку Закрыть , но не сохранить лист. Снова откройте лист Excel.

      Удалите все, кроме первых x строк, а затем экспортируйте в виде файла данных XML (смотрите в предыдущем разделе процедуры).

      Эта процедура позволит оставшейся части строки. На данный момент имеется два файлы Экспорт XML, объединяющие Создание дубликата исходного листа.

    Сохранение данных XML в сопоставленных ячейках в файле данных XML

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

    Примечание: Если лист содержит заголовки или метки, отличающиеся от имен XML-элементов на карте XML, то при экспорте или сохранении данных XML приложение Excel использует имена XML-элементов.

    Распространенные проблемы при экспорте данных XML

    При экспорте данных XML могут появляться сообщения, подобные приведенным ниже.

    Эту карту XML можно экспортировать, но некоторые необходимые элементы не сопоставлены

    Такое сообщение может появиться по следующим причинам.

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

      В иерархическом списке элементов в области задач "Источник XML" необходимые элементы выделены красной звездочкой. Она находится в верхнем правом углу значка, который расположен слева от элемента. Чтобы сопоставить необходимый элемент, перетащите его туда, где он должен отображаться.

      Элемент представляет собой рекурсивную структуру.

      Типичный пример рекурсивной структуры - иерархия сотрудников и руководителей, в которой одни и те же XML-элементы вложены на нескольких уровнях. Возможно, вы сопоставили все элементы в области задач "Источник XML". Но Excel не поддерживает рекурсивные структуры глубиной более одного уровня, поэтому сопоставить все элементы не удастся.

      XML-таблица содержит смешанное содержимое.

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

    Невозможно экспортировать карты XML в книге

    Карту XML не удастся экспортировать, если невозможно сохранить отношения сопоставленного элемента с другими элементами. Отношение может не сохраниться по следующим причинам.

      Определение схемы сопоставленного элемента содержится в последовательности со следующими атрибутами:

      • атрибут maxoccurs не равен 1;

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

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

      Несколько повторяющихся элементов сопоставлены с одной и той же XML-таблицей, и повторение не определено предком.

      Дочерние элементы разных родительских элементов сопоставлены с одной и той же XML-таблицей.

    Кроме того, невозможно экспортировать карту XML, если она содержит одну из следующих конструкций схемы XML.

      Список списков. В одном списке элементов есть другой список элементов.

      Ненормированные данные. XML-таблица содержит элемент, который в соответствии с определением в схеме должен встречаться один раз (атрибуту maxoccurs присвоено значение 1). При добавлении такого элемента в XML-таблицу Excel заполнит столбец таблицы несколькими его экземплярами.

      Выбор. Сопоставленный элемент является частью конструкции схемы .