Как преобразовать файл в Хмл? - Itsovet61.ru

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

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

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

Конвертация форматов 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) и мы точно еще пригодимся вам.

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

    XLS в XML

  • Converters
  • Document
  • XLS
  • Конвертировать XLS в XML
  • Конвертировать XLS в XML — онлайн и бесплатно

    Перетащите сюда файлы или выберите ссылку
    Максимальный размер файла 50МБ (хотите больше?)

    Или выберите новый формат

    И согласиться с нашими Условиями

    Перетащите ваши файлы, чтобы их конвертировать

    Мы сразу же ими займёмся

    File Size Warning

    You are attempting to upload a file that exceeds our 50MB free limit.

    You will need to create a paid Zamzar account to be able to download your converted file. Would you like to continue to upload your file for conversion?

    Files to Convert

    Overall conversion/upload progress:

    File Name File Size Progress

    Вы в хорошей компании:
    Zamzar конвертировал около 510 миллионов файлов начиная с 2006 года

    XLS (Document)

    Расширение файла .xls
    Категория Document File
    Описание «Microsoft Excel» является коммерческим приложением электронных таблиц, написанным и распростроняемым «Microsoft» для «Microsoft Windows» и «Mac OS X». Версии «Excel» до 2007 года для сохранения файлов используют формат XLS. В него входят вычисления, графические инструменты, сводные таблицы и макро язык программирования «Visual Basic» для приложений. Он стал широко используемой электронной таблицей на данных платмормах, особенно после 5 версии в 1993 году, а также он почти полностью заменил «Lotus 1-2-3» в качестве стадарта индустрии для электронных таблиц. «Excel» является частью «Microsoft Office». Последние версии – 2010 для «Microsoft Windows» и 2011 для «Mac OS X».
    Действия XLS в XML — Конвертировать файл сейчас
    View other document file formats
    Технические детали До 2007 года «Microsoft Excel» использовал собственный бинарный формат файлов, называемый «Binary Interchange File Format (BIFF)» в качестве главного формата. Используемый в качестве основы для XLS-файлов это постоянный формат, который поддерживает авторинг и манипулирование содержанием рабочих книг и шаблонов рабочих книг. Большинство версий «Microsoft Excel» могут читать форматы CSV, DBF, SYLK, DIF и др.
    Ассоциированные программы Microsoft Excel
    Microsoft Excel Viewer
    OpenOffice
    Разработано Microsoft
    Тип MIME application/vnd.ms-excel
    Полезные ссылки Подробнее о формате XLS
    Как отркыть файл XLS без «Microsoft Excel»
    Спецификация бинарного формата файлов «Microsoft Office»
    XLS Converter

    XML (Document)

    Расширение файла .xml
    Категория Document File
    Описание XML это тип файла, содержащий язык разметки. Он доступен для чтения как человеком-пользователем, так и приложениями. Разработанный, чтобы быть хранилищем данных, а не отображать данные, он является независимым от платформы языком и позволяет пользователям определять свои собственные тэги. Его мобильность и независимость от поставщиков сделали этот язык чрезвычайно популярным форматом файлов, особенно в сети. XML позволяет определять структуру данных, которая позволяет другим приложениям интерпретировать и обрабатывать данные внутри XML файлов. XML считается таким же важным для сети, как и HTML.
    Действия Convert XML file
    View other document file formats
    Технические детали Все файлы .XML содержат базовую структуру, в рамках которой пользователи могут определять свои собственные тэги. Каждый файл начинается с того, что называется декларацией XML. Это определяет версию и кодировку внутри самого файла. Затем файл должен определить корневой элемент, известный также как родительский элемент. Затем, корневой элемент получает дочерний элемент (ы). Все тэги в XML-файла должны иметь соответствующий закрывающий тэг. XML-файлы могут содержать комментарии, ссылки на объекты и атрибуты. Затем могут быть разработаны приложения для извлечения значений внутри файла и их представления по желанию.
    Ассоциированные программы Chrome
    Firefox
    Microsoft Internet Explorer
    Microsoft Office InfoPath
    Notepad
    Oxygen XML Editor
    Safari
    Разработано World Wide Web Consortium
    Тип MIME application/xml
    application/x-xml
    text/xml
    Полезные ссылки Подробнее о XML
    Учебник XML от «W3Schools»
    Официальная документация от «W3C»
    Convert XML file

    Преобразование файлов XLS

    Используя Zamzar можно конвертировать файлы XLS во множество других форматов

    • xls в bmp (Windows bitmap)
    • xls в csv (Comma Separated Values)
    • xls в gif (Compuserve graphics interchange)
    • xls в html (Hypertext Markup Language)
    • xls в html4 (Hypertext Markup Language)
    • xls в html5 (Hypertext Markup Language)
    • xls в jpg (JPEG compliant image)
    • xls в mdb (Microsoft Access Database)
    • xls в numbers (Apple iWork Numbers Spreadsheet)
    • xls в numbers09 (Apple iWork ’09 Numbers Spreadsheet)
    • xls в ods (OpenDocument spreadsheet)
    • xls в pdf (Portable Document Format)
    • xls в png (Portable Network Graphic)
    • xls в rtf (Rich Text Format)
    • xls в tiff (Tagged image file format)
    • xls в txt (Text Document)
    • xls в xlsx (Microsoft Excel 2007 Spreadsheet)
    • xls в xml (Extensible Markup Language)

    Преобразование в формат 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 и способных воспринять этот формат.

    Экспорт данных 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, поочередно щелкните остальные.

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

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

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

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

    Конвертация текстовых документов в 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 является файлом Extensible Markup Language. Это простые текстовые файлы, которые ничего не делают сами по себе, кроме описания транспортировки, структуры и хранения данных. RSS-канал является одним из распространенных примеров XML-файла.

    Некоторые XML-файлы – это файлы Cinelerra Video Project, используемые программой редактирования видео Cinelerra. Файл содержит настройки, связанные с проектом, такие как список прошлых изменений, внесенных в проект, а также пути к расположению мультимедийных файлов.

    Как открыть файл XML

    Многие программы могут открыть файл XML, включая Online XML Viewer Code Beautify и некоторые веб-браузеры. Есть несколько популярных программ, которые также могут редактировать файлы XML.

    Некоторые известные бесплатные редакторы XML включают Notepad++ и XML Notepad 2007, EditiX и Adobe Dreamweaver – пара других популярных XML-редакторов, но их можно использовать бесплатно только в том случае, если вам удастся получить пробную версию.

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

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

    Поскольку XML-файлы являются текстовыми файлами, любой текстовый редактор, включая встроенный в Windows инструмент «Блокнот», сможет правильно отображать и редактировать содержимое XML-файла. Выделенные редакторы XML, о которых мы упоминали в предыдущем абзаце, лучше подходят для редактирования файлов XML, поскольку они понимают структуру файла. Стандартный текстовый редактор не так прост в использовании для редактирования файлов XML.

    Файлы Cinelerra Video Project, использующие расширение файла XML, можно открыть с помощью программного обеспечения Cinelerra для Linux.

    Если вы по-прежнему не можете открыть свой файл, убедитесь, что вы не путаете его с файлом, который имеет похожее расширение, например, XMP, XMF или ML.

    Как конвертировать файл XML

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

    Например, простой текстовый редактор, который может открыть текстовый документ, такой как XML, обычно может сохранить файл в другом текстовом формате, таком как TXT.

    Если вы ищете быстрое решение, вы можете попробовать онлайн-инструмент XML To JSON Converter от Code Beautify. Этот инструмент позволяет конвертировать XML в JSON, вставив код XML на веб-сайте, а затем загрузив файл .JSON на свой компьютер. Вы также можете найти на своем компьютере файл XML или загрузить его с URL-адреса.

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

    Вот несколько бесплатных конвертеров, преобразующих в XML, а не из XML:

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

    Дополнительная информация о файлах XML

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

    Начиная с Microsoft Office 2007, Microsoft использует форматы на основе XML для Word, Excel и PowerPoint, показательные в соответствующих форматах файлов: .DOCX , .XLSX и .PPTX.

    Некоторые другие типы файлов на основе XML включают EDS, XSPF, FDX, SEARCH-MS, CMBL, APPLICATION и DAE.

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

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

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