Как преобразовать файл в формат XML?

XML – популярный формат для обмена данными между приложениями. Существует возможность конвертации файлов Excel в данный формат.

Как преобразовать файл в формат XML?

Конвертация форматов Microsoft Excel в XML

XML – это универсальный формат работы с данными. Его поддерживает множество программ, в том числе из сферы СУБД. Поэтому конвертация информации в XML важна именно с точки зрения взаимодействия и обмена данными между различными приложениями. Excel как раз входит в число программ, которые работают с таблицами, и даже может выполнять манипуляции с базами данных. Разберемся, как конвертировать файлы Эксель в XML.

Процедура конвертации

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

Способ 1: простое сохранение

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

  1. Запускаем программу Excel. Для того, чтобы открыть элемент, подлежащий конвертации переходим во вкладку «Файл». Далее жмем по пункту «Открыть».

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

Как видим, файл был открыт, а его данные отобразились на текущем листе. Опять переходим во вкладку «Файл».

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

Среди вариантов сохранения ищем наименование «Таблица XML 2003» или «XML-данные». Выбираем один из этих пунктов.

  • После этого жмем на кнопку «Сохранить».
  • Таким образом, преобразование файла из формата Excel в XML будет совершено.

    Способ 2: инструменты разработчика

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

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

    В открывшемся окне параметров перемещаемся в подраздел «Настройка ленты». В правой части окна устанавливаем галочку около значения «Разработчик». После этого жмем на кнопку «OK», размещенную в нижней части окна. Вкладка инструментов разработчика теперь включена.

    Далее открываем таблицу Excel в программе любым удобным способом.

    На её основе нам предстоит создать схему, которая формируется в любом текстовом редакторе. Для этих целей можно использовать и обычный Блокнот Windows, но лучше применять специализированное приложение для программирования и работы с языками разметки Notepad++. Запускаем эту программу. В ней создаем схему. На нашем примере она будет выглядеть, как показано внизу на скриншоте окна Notepad++.

    Как видим, открывающим и закрывающим тегом для документа в целом служит «data-set». В этой же роли для каждой строки выступает тег «record». Для схемы вполне будет достаточно, если мы возьмем всего две строки таблицы, а не будем переводить её всю вручную в XML. Название открывающего и закрывающего тега столбца может быть произвольным, но в данном случае для удобства мы предпочли просто перевести русскоязычные наименования колонок на английский язык. После того, как данные внесены, просто сохраняем их через функционал текстового редактора в любом месте на жестком диске в формате XML под названием «schema».
    Опять переходим к программе Excel с уже открытой таблицей. Перемещаемся во вкладку «Разработчик». На ленте в блоке инструментов «XML» кликаем по кнопке «Источник». В открывшемся поле в левой части окна жмем на кнопку «Карты XML…».

    В открывшемся окне кликаем по кнопке «Добавить…».

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

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

  • Кликаем правой кнопкой мыши по полученной таблице. В контекстном меню последовательно переходим по пунктам «XML» и «Экспорт…». После этого сохраняем файл в любой директории.
  • Как видим, существуют два основных способа конвертации файлов XLS и XLSX в формат XML программой Microsoft Excel. Первый из них предельно простой и заключается в элементарной процедуре сохранения с заданным расширением через функцию «Сохранить как…». Простота и понятность данного варианта, несомненно, являются преимуществами. Но у него есть один очень серьезный недостаток. Преобразование выполняется без учета определенных стандартов, и поэтому файл, конвертируемый таким способом, сторонними приложениями может просто не распознаваться. Второй вариант предполагает составление карты XML. В отличие от первого способа, таблица, преобразованная по данной схеме, будет соответствовать всем стандартам качества XML. Но, к сожалению, не каждый пользователь сможет быстро разобраться с нюансами этой процедуры.

    Помимо этой статьи, на сайте еще 12304 инструкций.
    Добавьте сайт Lumpics.ru в закладки (CTRL+D) и мы точно еще пригодимся вам.

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

    Как сделать из excel xml?

    XML – это универсальный формат работы с данными. Его поддерживает множество программ, в том числе из сферы СУБД. Поэтому конвертация информации в XML важна именно с точки зрения взаимодействия и обмена данными между различными приложениями. Excel как раз входит в число программ, которые работают с таблицами, и даже может выполнять манипуляции с базами данных. Разберемся, как конвертировать файлы Эксель в XML.

    Процедура конвертации

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

    Способ 1: простое сохранение

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

    1. Запускаем программу Excel. Для того, чтобы открыть элемент, подлежащий конвертации переходим во вкладку «Файл». Далее жмем по пункту «Открыть».
    2. Запускается окно открытия файлов. Переходим в директорию, где содержится файл, который нам нужен. Он должен быть в одном из форматов Эксель – XLS или XLSX. Выбираем его и жмем на кнопку «Открыть», расположенную в нижней части окна.
    3. Как видим, файл был открыт, а его данные отобразились на текущем листе. Опять переходим во вкладку «Файл».
    4. После этого переходим по пункту «Сохранить как…».
    5. Открывается окно сохранения. Переходим в ту директорию, в которой желаем, чтобы хранился конвертированный файл. Впрочем, можно оставить и директорию по умолчанию, то есть ту, что предложила сама программа. В этом же окне, если возникнет желание, можно изменить наименование файла. Но основное внимание нужно обратить на поле «Тип файла». Раскрываем перечень кликом по данному полю.

    Среди вариантов сохранения ищем наименование «Таблица XML 2003» или «XML-данные». Выбираем один из этих пунктов.

  • После этого жмем на кнопку «Сохранить».
  • Таким образом, преобразование файла из формата Excel в XML будет совершено.

    Способ 2: инструменты разработчика

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

    1. По умолчанию вкладка инструментов разработчика отключена. Поэтому, прежде всего, нужно её активировать. Переходим во вкладку «Файл» и кликаем по пункту «Параметры».
    2. В открывшемся окне параметров перемещаемся в подраздел «Настройка ленты». В правой части окна устанавливаем галочку около значения «Разработчик». После этого жмем на кнопку «OK», размещенную в нижней части окна. Вкладка инструментов разработчика теперь включена.
    3. Далее открываем таблицу Excel в программе любым удобным способом.
    4. На её основе нам предстоит создать схему, которая формируется в любом текстовом редакторе. Для этих целей можно использовать и обычный Блокнот Windows, но лучше применять специализированное приложение для программирования и работы с языками разметки Notepad++. Запускаем эту программу. В ней создаем схему. На нашем примере она будет выглядеть, как показано внизу на скриншоте окна Notepad++.

    Как видим, открывающим и закрывающим тегом для документа в целом служит «data-set». В этой же роли для каждой строки выступает тег «record». Для схемы вполне будет достаточно, если мы возьмем всего две строки таблицы, а не будем переводить её всю вручную в XML. Название открывающего и закрывающего тега столбца может быть произвольным, но в данном случае для удобства мы предпочли просто перевести русскоязычные наименования колонок на английский язык. После того, как данные внесены, просто сохраняем их через функционал текстового редактора в любом месте на жестком диске в формате XML под названием «schema».

  • Опять переходим к программе Excel с уже открытой таблицей. Перемещаемся во вкладку «Разработчик». На ленте в блоке инструментов «XML» кликаем по кнопке «Источник». В открывшемся поле в левой части окна жмем на кнопку «Карты XML…».
  • В открывшемся окне кликаем по кнопке «Добавить…».
  • Запускается окно выбора источника. Переходим в директорию расположения схемы составленной ранее, выбираем её и кликаем по кнопке «Открыть».
  • После того, как элементы схемы появились в окне, перетаскиваем их с помощью курсора в соответствующие ячейки наименования столбцов таблицы.
  • Кликаем правой кнопкой мыши по полученной таблице. В контекстном меню последовательно переходим по пунктам «XML» и «Экспорт…». После этого сохраняем файл в любой директории.
  • Читайте также  Как открыть файл CSV на телефоне?

    Как видим, существуют два основных способа конвертации файлов XLS и XLSX в формат XML программой Microsoft Excel. Первый из них предельно простой и заключается в элементарной процедуре сохранения с заданным расширением через функцию «Сохранить как…». Простота и понятность данного варианта, несомненно, являются преимуществами. Но у него есть один очень серьезный недостаток. Преобразование выполняется без учета определенных стандартов, и поэтому файл, конвертируемый таким способом, сторонними приложениями может просто не распознаваться. Второй вариант предполагает составление карты XML. В отличие от первого способа, таблица, преобразованная по данной схеме, будет соответствовать всем стандартам качества XML. Но, к сожалению, не каждый пользователь сможет быстро разобраться с нюансами этой процедуры.

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

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

    Помогла ли вам эта статья?

    Конвертер файлов / Документы / Конвертировать в XLS / XML конвертер / XLS в XML

    Вы можете перевести XLS документ в XML и во множество других форматов с помощью бесплатного онлайн конвертера.

    Выберите файл с компьютера, Google Диска, Dropbox или перетащите его на страницу

    Выберите xml или любой другой формат, который вам нужен (более 100 поддерживаемых форматов)

    Скачайте ваш xml файл

    Подождите пока ваш файл сконвертируется и вы сразу сможете его скачать xml -файл

    Microsoft Excel Binary File Format

    XLS – представляет собой электронную таблицу, созданную популярным приложением Microsoft Excel. Включает в себя данные документа, которые расположены в ячейках, обладающих определенным адресом. Они могут содержать формулы, математические уравнения, имеющие связь с информацией в других ячейках, и фиксированные сведения. Нередко применяется для разработки графиков и схем. Формат позволяет хранить и редактировать большой круг параметров – изображения, таблицы, макросы, шрифты, диаграммы. Широко использовался до появления версии Excel 2007 года, а затем был заменен на расширение XMLSS. Сведения внутри документа XLS содержатся в серии потоков статичного размера, их месторасположение описывается с помощью нескольких таблиц распределения сегментов. Отличается обратной совместимостью и поддерживает различные форматы файлов, созданных для DOS. Нередко применяется веб-браузерами с целью исключить использование бинарных форматов. Утилита входит в офисный пакет Microsoft и кроме Excel может открываться различными приложениями вроде Apache Open Office, Libre Office, адаптированных к ОС MacOS, Windows или Linux.

    Востребованность формата объясняется его простотой, хотя он не поддерживает отдельные функции, например, хранение макросов VBA. Вплоть до появления XMLSS приложение Excel при форматировании применяло расширение Biff, созданное на базе формата-контейнера IFF. Благодаря этому были доступны изменения шаблонов книг и их содержание. После внедрения в 2007 году нового формата программа не утратила свойств обратно совместимой, что гарантирует широкое распространение XLS и в будущем. Впоследствии на смену расширению XLS пришли форматы XLSM, XLSB и XLSX.

    Экспорт данных XML

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

    Перед экспортом данных XML необходимо включить вкладку «Разработчик» на ленте. См. вкладку «Разработчик».

    При создании карт XML и экспорте данных Excel в XML-файлы существует ограничение на количество строк, которые можно экспортировать. При экспорте в XML-файл из Excel можно сохранить до 65 536 строк. Если файл содержит более 65 536 строк, Excel сможет экспортировать только число строк, определяемое формулой ЧСТРОК ОСТАТ 65537. Например, если лист содержит 70 000 строк, Excel экспортирует 4464 строки (70000 ОСТАТ 65537). Рекомендуем сделать следующее: 1) использовать формат XLSX; 2) сохранить файл в формате «Таблица XML 2003 (*.xml)» (при этом будут потеряны сопоставления); 3) удалить все строки после 65 536 и затем снова выполнить экспорт (при этом сопоставления сохранятся, но будут потеряны строки в конце файла).

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

    На вкладке Разработчик нажмите кнопку Экспорт.

    Если вкладка Разработчик не отображается, см. раздел Отображение вкладки «Разработчик».

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

    Это диалоговое окно отображается только в том случае, если не выбрана XML-таблица и книга содержит несколько карт XML.

    В большом диалоговом окне Экспорт XML в поле Имя файла введите имя файла XML-данных.

    Нажмите кнопку Экспорт.

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

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

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

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

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

    Нажмите кнопку «Закрыть», но не сохраните лист. Затем снова откроете таблицу Excel.

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

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

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

    Нажмите клавиши CTRL+S, чтобы сохранить файл.

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

    Нажмите кнопку > «Сохранитькак» и выберите расположение для сохранения файла.

    Только в Excel 2007 нажмите кнопку «Microsoft Office» , на стрелку рядом с кнопкой «Сохранить как» и выберите пункт «Другие форматы».

    В поле Имя файла введите имя файла данных XML.

    В списке Тип файла выберите тип Данные XML и нажмите кнопку Сохранить.

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

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

    Это диалоговое окно отображается только в том случае, если не выбрана XML-таблица и книга содержит несколько карт XML.

    В большом диалоговом окне Экспорт XML введите в поле Имя файла имя для файла данных XML.

    Нажмите кнопку Экспорт.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Приложение Excel не может сохранить книгу в файле данных XML, пока вы не создадите один или несколько сопоставленных диапазонов.

    Если вы добавили в книгу карту XML, для сопоставления XML-элементов на листе сделайте следующее.

    На вкладке Разработчик выберите команду Источник.

    Если вкладка Разработчик не отображается, см. раздел Отображение вкладки «Разработчик».

    В области задач Источник XML выберите элементы, которые нужно сопоставить с листом.

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

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

    Читайте также  Как открыть ISO файл с помощью WinRAR?

    Если вы не добавили карту XML в книгу или данные не находятся в XML-таблице, сохраните книгу в формате книги Excel с поддержкой макросов (XLSM).

    Дополнительные сведения

    Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.

    Как сделать файл с расширением XML

    Опубликовано 15 февраля 2018
    Автор статьи NimdaIT
    Категория Полезные советы
    Обсуждение нет комментариев

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

    Что это за тип файла

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

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

    Способ 1: Использование программы Visual Studio

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

    1. Запустите программу и перейдите во вкладку «Файл».
    2. В открывшемся меню выберите пункт «Создать» и перейдите на строку «Файл».
    3. Теперь необходимо определиться с форматом. Нажмите «XML-файл».
    4. Откроется окно для работы, в котором начало будет уже написано. Автоматически используется кодировка UTF-8, но его всегда с легкостью можно изменить.
    5. Пропишите нужный код.
    6. После завершения написания, перейдите во вкладку «Файл» и выберите «Сохранить все».

    Способ 2: Воспользоваться Microsoft Excel

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

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

    1. Запустите программу и введите необходимую информацию.
    2. Перейдите во вкладку «Файл».
    3. В появившейся вкладке кликните на пункт «Сохранить как».
    4. Выберите каталог для сохранения.
    5. Введите имя документа и укажите во вкладке «Тип файла» «XML-данные».
    6. Подтвердите пройденные шаги нажав на «Сохранить».

    Способ 3: Текстовый редактор Блокнот

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

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

    1. Запустите редактор и создайте пустой документ.
    2. Пред началом работы требуется установить необходимую кодировку. Делается с помощью команды:

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

  • Создайте первый фрагмент написав текст .
  • Внутри можно указать любую команду, например с названием Василий Васильевич.
  • Появилась возможность вписать внутрь тега любые параметры. Укажите возраст и профессию. 45 True
  • Если вы не напутаете ничего в написании, по итогу получится рабочий код.
  • Для того чтобы сохранить результат выберите вкладку «Файл».
  • Кликните на пункт «Сохранить как».
  • В процессе присваивания имени файлу измените формат на XML.

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

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

    Конвертация текстовых документов в xml на С#

    Недавно мне пришлось столкнуться с необходимостью достать текст из офисных документов (docx, xlsx, rtf, doc, xls, odt и ods). Задача осложнялась требованием представить текст в формате xml без мусора с максимально удобной для дальнейшего парсинга структурой.

    Решение использовать Interop сразу отпало по причине его громоздкости, во многом избыточности, а также необходимости устанавливать на сервер MS Office. В результате, решение было найдено и воплощено на внутреннем проекте. Однако, поиск оказался настолько сложен и не тривиален в силу отсутствия каких-либо общедоступных мануалов, что мной было принято решение написать в свободное от работы время библиотеку, которая решала бы указанную задачу, а также создать написать что-то вроде инструкции, чтобы разработчики прочитав ее смогли, хотя бы поверхностно, разобраться в вопросе.

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

    1. Для платформы .Net не существует какого-либо готового решения для работы со всеми перечисленными форматами, что заставит нас местами кастылизовывать наш солюшн.
    2. Не пытайтесь в сети найти хороший мануал по работе с Microsoft OpenXML: чтобы разобраться с этой библиотекой придется изрядно покрасноглазить, покурить StackOverflow и поиграться с отладчиком.
    3. Да, мне все таки, удалось приручить дракона.

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

    Работа с xlsx и docx

    .xlsx

    Наверняка, раз вы читаете эту статью, то уже в курсе, что docx и xlsx фактически являются zip-архивами, в которых лежит множество разных xml. Если нет, то убедиться в этом не составит труда: меняем расширение файла на zip и открываем любым архиватором. Так, наши листы документа будут лежать по следующему пути: xlworksheets .

    У меня уже есть подготовленный excel документ, и, если открыть какой-нибудь лист по указанному ранее пути, то мы увидим примерно следующее содержимое:

    Обратите внимание на то, что в ячейках, которые содержат формулы, записаны формулы (внутри тега ) и результат (внутри тега ). Также, ячейки с повторяющимся содержимым отмечены как shared и содержат ссылку на строку в файле sharedStrings.xml, расположенного по пути xl .
    Пока просто имейте ввиду эти особенности: как обрабатывать их будет показано ниже.

    Прежде, чем писать наши классы-конвертеры, создадим интерфейс IConvertable:

    Теперь все наши классы, должны будут реализовывать два метода: string Convert(Stream stream) для работы с потоком (может быть очень полезным, если необходимо получить какую-то информацию из файла без его сохранения на хосте), а также string ConvertByFile(String path) для конвертации непосредственно файла.

    Создаем класс XlsxToXml , реализующий интерфейс IConvertable и подключаем через Nuget DocumentFormat.OpenXml (на момент написания, актуальной являлась версия 2.10.0).

    Логику обработки документа поместим в отдельный приватный метод string SpreadsheetProcess(Stream memStream) , который будет вызываться в string Convert(Stream stream) .

    Как видно, сама логика реализована в методе *string SpreadsheetProcess(Stream memStream)* :

    Итак, в методе string SpreadsheetProcess(Stream memStream) происходит следующее:

    В блоке using открываем документ excel из потока. За работу с xlsx в библиотеке DocumentFormat.OpenXml отвечает класс SpreadsheetDocument.

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

    Выше я писал про shared ячейки (в которых хранятся повторяемые значения). Так вот, из объекта класса SpreadsheetDocument их можно получить так:
    SharedStringTable sharedStringTable = doc.WorkbookPart.SharedStringTablePart.SharedStringTable .

    Далее создаем переменную, в которой будет храниться номер листа и запускаем цикл

    в котором выполняется обработка каждого листа с помощью вызываемого метода
    WorkSheetProcess(sb, sharedStringTable, worksheetPart, doc, sheetIndex); :

    Пожалуй, в данной функции больше всего вопросов вызывает строчка:
    string sheetName = doc.WorkbookPart.Workbook.Descendants ().ElementAt(sheetIndex).Name.ToString();
    То, что таким образом мы получаем имя листа, думаю понятно. Но вот, чтобы добраться до нее придется воспользоваться отладчиком и методом научного тыка. Поэтому не стесняемся, ставим точку остановки, жмакаем shift+F9(или как там у вас), открываем переменную doc (в которой лежит наш документ)->WorkbookPart->Workbook и вызываем метод Descendants(), который вернет коллекцию всех дочерних элементов типа Sheet . Ну а дальше остается по индексу получить конкретный лист, вытащить его имя и преобразовать в строку (что и сделано в коде). Как это примерно выглядит показано на рисунке ниже:

    Далее по коду в цикле foreach получаем данные из листа, которые представляют собой коллекцию строк. Если внутри объекта sheetData есть какие-то элементы, то это строки, каждую из которых мы обработаем методом RowProcess :

    В методе void RowProcess(Row row, StringBuilder sb, SharedStringTable sharedStringTable) происходит следующее:

    В цикле foreach (Cell cell in row.Elements ()) проверяем каждую ячейку на предмет наличия в ней записанной формулы:

    Если формула обнаружена, то получаем значение, вычисленное по формуле ( cellValue = cell.CellValue.InnerText; ) и переходим к следующей ячейке.
    Если ячейка не содержит формулы, то мы проверяем, является ли она shared: если является, то берем значение по индексу из ранее полученной коллекции с повторяющимися значениями:

    В противном случае, мы просто получаем значение из ячейки.

    .docx

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

    Итак, для начала пара слов о внутреннем устройстве документа. Предлагаю снова проделать процедуру с переименованием расширения файла в zip и открыть его любым архиватором. Внутри мы увидим несколько папок. Открываем папку word и находим файл document. Да, внутри лежит еще куча файлов, но они, по большому счету, для решения нашей задачи не нужны. Однако, никто вам не запрещает в них поковыряться: вдруг вам потребуется вытащить какие-нибудь стили из документа.

    Как мы видим, содержимое каждого абзаца находится внутри тега w:t, который лежит внутри w:r, который также находится внутри w:p. По большому счету, эта структура является ключевой для всех документов docx, независимо от их содержимого. Обратите внимание на списки: каждый элемент также находится внутри описанной структуры, но с добавлением тегов w:numPr, внутри которого определяется уровень вложенности списка (w:ilvl) и id списка, которому принадлежит данный элемент (w:numId).

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

    Более того, данная структура сохраняется и для таблиц. Правда теперь она упакована в теги w:tr (строка) и w:tc(ячейка).

    Прежде, чем начать кодить, хочу обратить внимание на один очень важный ньюанс (да-да, как в анекдоте про Петьку и Василия Ивановича). При разборе списков, особенно это касается вложенных, может возникнуть ситуация, когда пункты списка разделены какой-то вставкой текста, изображения или вообще чего угодно. Тогда возникает вопрос, когда же нам ставить закрывающий тег списка? Мое предложение попахивая костылезацией и велосипедостроением сводится к добавлению словаря, ключами которого будут выступать id списков, а значение будет соответствовать id параграфа (да, оказывается каждый параграф в документе имеет свой уникальный id), который одновременно является последним в каком-то списке. Пожалуй, написано довольно сложно, но, думаю, когда посмотрите на реализацию, станет несколько понятнее:

    Dictionary listEl = new Dictionary (); — словарь в котором будет храниться информация о последних элементах каждого из списков.

    using (WordprocessingDocument doc = WordprocessingDocument.Open(memStream, false)) — создаем объект doc класса WordprocessingDocument, в котором находится содержимое нашего документа word, но уже в структурированном (на столько, на сколько это позволяет библиотека OpenXML) виде.

    StringBuilder sb = new StringBuilder(1000); — наша будущая строка с легко читаемым содержимым в формате xml.

    Body docBody = doc.MainDocumentPart.Document.Body; — получаем содержимое нашего документа, с которым мы дальше и будем работать

    Вызываем функцию CreateDictList(listEl, docBody); , которая пробегается в цикле foreach по всем элементам документа, и ищет последний абзац для каждого списка:

    ().GetFirstChild ().GetFirstChild ().Val; — написание подобного рода страшных конструкций является отнюдь не результатом штудирования документации (можете перейти на сайт мелкомягких https://docs.microsoft.com/ru-ru/office/open-xml/open-xml-sdk и попытаться раскурить их мануал), а представляет собой порождение научного тыка в режиме дебага. Если есть люди, которые владеют методологией изучения подобных библиотек с аналогичной детализацией документации, буду рад, если поделитесь своим опытом)

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

    Блок try-catch используется в связи с тем, что существует вероятность наличия в документе какого-то элемента, который не предусмотрен в блоке switch-case (в нашем случае, мы производим обработку только абзацев, списков и таблиц). Таким образом, если в документе есть что-то неопознанное и нами не предвиденное, то программа просто проигнорирует такой кейс.

    Если элемент является частью списка, то он обрабатывается с помощью метода ListParagraph(sb, (Paragraph)element); :

    По большому счету данный метод всего лишь упаковывает содержимое параграфа в теги

      , дополняя его информацией об id списка и уровне вложенности.

    Если же, текущий элемент не является списком или таблицей, то он обрабатывается с помощью метода SimpleParagraph(sb, (Paragraph)element); :

    То есть, содержимое текста просто оборачивается в тег

    Таблица обрабатывается в методе Table(sb, (Table)element); :

    На этом, поставленную задачу предлагаю считать решенной для документов формата docx и xlsx.

    Преобразование в формат XML

    Рассмотрим процедуру преобразования объекта базы данных в формат XML:

    1. В окне базы данных выделите необходимый объект щелчком левой кнопки мыши и выберите команду Файл, Экспорт (File, Export) или щелкните по объекту правой кнопкой и выберите в контекстном меню команду Экспорт (Export).
    2. Появится диалоговое окно Экспорт объекта (Export To). В раскрывающемся списке Типы (Save as type) выделите элемент Документы XML (XML Documents). В поле Имя файла (File name) введите название документа HTML и нажмите кнопку Экспорт (Export).
    3. Появится диалоговое окно Экспорт XML (Export XML) (рис. 12.9).
    4. Это диалоговое окно содержит три флажка для трех составляющих документа XML: данных, схемы данных и представления данных (о них см. разд. «Формат XML в Microsoft Office 2002» данной главы). Установите флажки для тех частей документа XML, которые необходимо получить в результате экспорта. Например, если установить одновременно флажки данные (XML) (Data (XML)) и схема данных (Schema of the data), то схема данных будет экспортирована и сохранена отдельно от файла данных XML, в файле XSD. Для таблиц можно экспортировать только данные или их структуру или данные и структуру вместе и не экспортировать представление таблицы в виде Web-страницы: флажок презентация данных (XSL) (Presentation of your data (XSL)) можно снять.

    Рис. 12.9. Диалоговое окно Экспорт XML

    Замечание

    Флажок данные (XML) следует сбросить лишь в том случае, если вы хотите экспортировать только новое представление объекта базы данных, а данные были экспортированы в файл XML раньше. Иначе при открытии полученной Web-страницы будет выдано сообщение об ошибке подключения к источнику данных, а сама страница окажется практически пустой.

    1. Чтобы установить дополнительные параметры преобразования, нажмите кнопку Дополнительно (Advanced) (рис. 12.10).

    Рис. 12.10. Вкладка Данные диалогового окна Экспорт XML

    1. Кроме того, это диалоговое окно содержит еще две вкладки для двух оставшихся составляющих документа XML: схемы данных и представления данных. На каждой из этих вкладок можно установить флажок, позволяющий экспортировать соответствующую часть документа XML, указать путь и имя файла, в котором будет сохранена эта часть документа, и задать некоторые дополнительные параметры:
      • на вкладке Данные (Data) с помощью раскрывающегося списка Кодировка (Encoding) можно выбрать кодировку для сохранения содержимого страницы;
      • на вкладке Схема (Schema) с помощью переключателей можно выбрать, экспортировать ли структуру данных в отдельный файл XSD или внедрить ее в файл XML вместе с данными;

    Рис. 12.11. Отчет «Счет», открытый в базе данных

    • на вкладке Презентация (Presentation) с помощью переключателей можно выбрать формат представления Web-страницы: обрабатываемый на стороне клиента HTML или на стороне сервера ASP. Если экспортируемый объект содержит рисунки, которые необходимо включить в результирующий документ, можно указать имя папки, в которой они расположены. На этой же вкладке есть поле для ввода имени файла XSL с описанием оформления страницы. Если указанный файл не существует, Access 2002 создаст файл в формате XSL описанием внешнего представления документа (разработчик может использовать его в дальнейшем как основу для разработки файла в формате XSLT для преобразования документа XML в другой формат).

    Если потребуется дополнительная информация о представлении данных в формате XML, нажмите кнопку Справка (Help). Информацию о разработке и преобразовании документов XML можно найти на Web-узле Microsoft для разработчиков: http://msdn.microsoft.com/ .

    Рис. 12.12. Отчет «Счет», данные которого преобразованы в формат XML, открытый в Internet Explorer

    1. Нажмите кнопку ОК.
    2. Если предложенные параметры преобразования не были изменены, в результате будут созданы три файла: XML — с данными, XSL — со стилями и НТМ — с представлением преобразованного объекта. Чтобы открыть полученную Web-страницу, требуется открыть в Internet Explorer файл НТМ или ASP, в зависимости от того, какой формат представления был выбран..

    К сожалению, подчиненные формы и отчеты, а также связанные рисунки не будут добавлены в документ XML, полученный из объекта базы данных. Однако простые объекты с внедренными рисунками, экспортированные в формат XML, будут выглядеть практически точно так же, как исходные в Access. Вы можете в этом убедиться, сравнив, к примеру, исходный и преобразованный в формат XML отчет «Счет» (Invoice) из базы данных «Борей» (Northwind) (рис. 12.11 и 12.12).

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

    Замечание

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

  • Борис Аладышкин/ автор статьи

    Приветствую! Я являюсь руководителем данного проекта и занимаюсь его наполнением. Здесь я стараюсь собирать и публиковать максимально полный и интересный контент на темы связанные с современными технологиями и программным обеспечением. Уверен вы найдете для себя немало полезной информации. С уважением, Борис Аладышкин.

    Понравилась статья? Поделиться с друзьями:
    Itsovet61.ru
    Добавить комментарий

    ;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: