Теги xml для excel

Диаграмма XML

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

В этой статье

  • Причины использования XML в Excel

    • Данные XML и файлы схемы

    • Ключевые сценарии XML и Excel

  • Основной процесс использования данных XML в Excel

  • Работа с картами XML

    • Использование области задач источника XML

    • Типы элементов и их значки

    • Работа с ячейками с точечным сопоставлением

    • Работа с повторяющимися ячейками в XML-таблицах

    • Обеспечение безопасности карт XML

    • Импорт данных XML

    • Работа с полученной схемой

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

    • Использование файла Excel формата Office Open XML с поддержкой макросов

Причины использования XML в Excel

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

Данные XML и файлы схемы

Excel работает преимущественно с двумя типами XML-файлов:

  • файлами данных XML (XML), которые содержат настраиваемые теги и структурированные данные;

  • Файлы схемы (XSD), которые содержат теги схемы, в которых действуют правила, например тип данных и проверка.

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

Ключевые сценарии XML и Excel

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

Вот ключевые сценарии, для работы с которыми предназначены возможности XML:

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

  • использование данных XML в качестве входных данных для существующих моделей вычислений путем сопоставления XML-элементов с существующими листами;

  • импорт файлов данных XML в новую книгу;

  • импорт данных XML из веб-службы на лист Excel;

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

К началу страницы

Основной процесс использования данных XML в Excel

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

Общие сведения о работе с данными XML в Excel

Выноска 1 добавление файла схемы XML (XSD) в книгу

Выноска 2 сопоставление элементов схемы XML с отдельными ячейками или XML-таблицами

Выноска 3 импорт файла данных XML (.xml) и привязку XML-элементов к ячейкам

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

Callout 5 экспорт измененных данных из картографовых ячеек в файл данных XML

Работа с картами XML

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

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

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

Важно знать такие правила использования карт XML:

  • книга может содержать одну или несколько карт XML;

  • одновременно можно сопоставить только один элемент с одним расположением в книге;

  • каждая карта XML независима от других, даже если несколько карт XML в одной книге относятся к одной и той же схеме;

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

Использование области задач источника XML

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

Область задач источника XML

1.  Отображение карт XML, добавленных в книгу.

2.  Отображение иерархического списка XML-элементов в текущей карте XML.

3.  Установка параметров при работе с областью задач Источник XML и данными XML (например, параметров, отвечающих за предварительный просмотр данных и управление заголовками).

4.  Открытие диалогового окна Карты XML, которое служит для добавления, удаления или переименования карт XML.

5.  Проверка возможности экспорта данных XML через текущую карту XML.

К началу страницы

Типы элементов и их значки

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

Тип элемента

Значок

Родительский элемент

Изображение кнопки

Обязательный родительский элемент

Изображение кнопки

Повторяющийся родительский элемент

Изображение значка

Обязательный повторяющийся родительский элемент

Изображение значка

Дочерний элемент

Изображение кнопки

Обязательный дочерний элемент

Изображение значка

Повторяющийся дочерний элемент

Изображение значка

Обязательный повторяющийся дочерний элемент

Изображение значка

Атрибут

Изображение значка

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

Изображение значка

Простое содержимое в сложной структуре

Изображение значка

Обязательное простое содержимое в сложной структуре

Изображение кнопки

К началу страницы

Работа с ячейками с точечным сопоставлением

Ячейка с точечным сопоставлением — это ячейка, сопоставленная с неповторяющимся XML-элементом. Такую ячейку вы можете создать, переместив неповторяющийся XML-элемент из области задач Источник XML в отдельную ячейку листа.

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

Кроме того, в ячейке с точечным сопоставлением вы можете использовать формулу, если ячейка сопоставлена с XML-элементом, который имеет тип данных определения схемы XML (XSD), интерпретируемый Excel как число, дата или время.

К началу страницы

Работа с повторяющимися ячейками в XML-таблицах

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

XML-таблица создается в следующих случаях:

  • при использовании команды Импорт (в группе XML на вкладке Разработчик) для импорта файла данных XML;

  • Используйте команду Открыть из Excel, чтобы открыть файл данных XML, а затем выберите В качестве XML-таблицы в диалоговом окне Открыть XML.

  • при использовании команды Из импорта данных XML (кнопка команды Из других источников в группе Внешние данные на вкладке Данные) для импорта файла данных XML и дальнейшего выбора параметров XML-таблица на существующем листе или Новый лист в диалоговом окне Импорт данных;

  • при перетаскивании на лист одного или нескольких повторяющихся элементов из области задач Источник XML.

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

При работе с XML-таблицами полезны два параметра, доступные с помощью кнопки Параметры в области задач Источник XML.


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


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

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

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

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

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

Обеспечение безопасности карт XML

Карта XML и содержащиеся в ней сведения об источнике данных сохраняются в книге Excel, а не на определенном листе. Злоумышленник может просмотреть эти данные карты с помощью макроса VBA (Microsoft Visual Basic для приложений). Более того, если книга сохранена в файле Excel формата Open XML с поддержкой макросов, данные карты можно просмотреть с помощью Блокнота или другого текстового редактора.

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

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

К началу страницы

Импорт данных XML

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

В диалоговом окне Свойства карты XML (на вкладке Разработчик в группе XML выберите пункт Свойства карты) расположены три параметра, используемые по умолчанию, с помощью которых вы можете управлять привязкой данных XML:

  • <c0>Проверять данные на соответствие схеме при импорте и экспорте</c0>.    Указывает, следует ли Excel проверять данные по карте XML при импорте. Установите флажок, если нужно, чтобы импортируемые данные XML соответствовали схеме XML.

  • <c0>Заменять существующие данные новыми</c0>.    Указывает, следует ли заменять данные при импорте. Установите флажок, если необходимо заменять текущие данные новыми (например, если в новом файле данных XML содержатся обновленные данные).

  • <c0>Добавлять новые данные в существующие XML-таблицы</c0>.    Указывает, следует ли добавлять содержимое источника данных к существующим данным на листе. Используйте этот параметр, если, например, вам необходимо объединить данные из нескольких похожих файлов данных XML в одну XML-таблицу или вы не хотите, чтобы содержимое ячейки с функцией было перезаписано.

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

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

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

Примечание: Возможность импорта данных XML из веб-службы с помощью файла подключения службы извлечения данных (UXDC) для подключения к источнику данных больше не поддерживается в пользовательском интерфейсе более новых версий, чем Excel 2003. Если вы откроете книгу, созданную в Excel 2003, вы сможете только просмотреть их, но не сможете изменить или обновить исходные данные.

Работа с полученной схемой

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

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

Полученную схему Excel невозможно экспортировать как отдельный файл данных схемы XML (XSD). Несмотря на наличие редакторов схем XML и других методов создания файлов схем XML, они могут оказаться недоступными или неудобными в работе. Вместо них вы можете воспользоваться надстройкой Excel 2003 XML Tools 1.1, с помощью которой можно создавать файлы схемы на основе карты XML. Дополнительные сведения см. в Excel XML Tools версии 1.1.

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

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

  • пустые элементы не создаются при наличии пустых ячеек для дополнительного элемента, но они создаются при наличии пустых ячеек для обязательного элемента;

  • запись данных производится в кодировке UTF-8;

  • все пространства имен определяются в корневом XML-элементе;

  • Excel перезаписывать существующие префиксы пространства имен. По умолчанию области имен назначен префикс ns0. Последовательные пространства имен обозначаются ns1, ns2 для ns<>, где <count> — количество пространства имен, записанное в XML-файл.

  • узлы комментариев не сохраняются.

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

Использование файла Excel формата Office Open XML с поддержкой макросов

Книгу Excel можно сохранять в различных форматах файла, включая файлы Excel формата Office Open XML (XLSM) с поддержкой макросов. Excel содержит схему XML, определяющую содержимое книги Excel, в том числе теги XML, в которых хранятся все сведения книги (например, данные и свойства), а также всю структуру книги. Файл Excel формата Office XML с поддержкой макросов может применяться в пользовательских приложениях. Например, разработчики могут создать приложение, которое выполняет поиск данных в нескольких книгах, сохраненных в этом формате, и создает систему отчетов на основании полученных данных.

К началу страницы

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

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

См. также

Импорт данных XML

Сопоставление XML-элементов с ячейками карты XML

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

Переописывание данных XML

Время на прочтение
25 мин

Количество просмотров 34K

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

На написание данной статьи меня натолкнули уже существующие статьи от @Lachrimae.

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

Оглавление:

  1. Структура файлов;

  2. Разбор файла _rels/.rels;

  3. Разбор docProps/app.xml;

  4. Разбор docProps/core.xml;

  5. Разбор xl/_rels/workbook.xml.rels;

  6. Разбор xl/printerSettings/printerSettings1.bin;

  7. Разбор xl/theme/theme1.xml;

  8. Разбор xl/worksheets/_rels/sheet1.xml.rels;

  9. Разбор xl/worksheets/sheet1.xml;

  10. Разбор xl/caclChain.xml;

  11. Разбор xl/sharedStrings.xml;

  12. Разбор xl/styles.xml;

  13. Разбор xl/workbook.xml;

  14. Разбор [Content_Types].xml;

  15. Завершение.

Структура файлов

Так как Excel — это архив файлов .xml, то мы можем его распаковать и увидеть следующее содержание:

Дерево файлов и подкаталогов

Дерево файлов и подкаталогов

Некоторые файлы могут отсутствовать, такие как: xl/worksheets/_rels/sheet.xml.rels, xl/calcChain.xml, xl/printerSettings/printerSettings1.bin и sharedString.xml

В папках xl/worksheets, xl/printerSettings и xl/worksheets/_rels могут быть по несколько файлов.

Давайте разберёмся, для чего все эти файлы, начнём по порядку:

_rels/.rels — описание связей файлов, касаемых самой работы Excel;

docProps/app.xml — описание и настройки приложения Excel;

docProps/core.xml — здесь записывается имя создателя файла, время создания и последнего редактирования файла;

xl/_rels/workbook.xml.rels — перечень и описание зависимостей файлов, используемых в книге;

xl/printerSettings/printerSettings1.bin — описание настроек для печати листа;

xl/theme/theme1.xml — описание стилей приложения;

xl/worksheets/_rels/sheet1.xml.rels — описание связей листа xl/worksheets/sheet1.xml с другими документами;

xl/worksheets/sheet1.xml — описание всего происходящего на листе, который находится на первой позиции в списке листов книги. Название листа и название файла никак не связаны, файл всегда называется sheet1, sheet2 и т.д. На каждый лист приходится один такой файл;

xl/caclChain.xml — цепочка вычислений. Конструкция, указывающая порядок вычислений ячеек в книге в последний раз;

xl/sharedStrings.xml — перечень строковых значений, используемых во всей книге;

xl/styles.xml — описание стилей, используемых во всей книге;

xl/workbook.xml — описание настроек книги и перечень используемых листов;

[Content_Types].xml — описание всех файлов и их типов.

Разбор файла _rels/.rels

Если открыть файл — мы увидим следующее содержание:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
    <Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Target="docProps/app.xml"/>
    <Relationship Id="rId2" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Target="docProps/core.xml"/>
    <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/>
</Relationships>

В первой строке у нас объявляется тип документа — xml с его версией, кодировкой и автономности.

standalone (автономность) — Это объявление указывает, содержит ли внешнее подмножество DTD (Document Type Definition — определение типа документа) какие-либо объявления, которые могут повлиять на текущее содержимое документа.

Вторая строчка — открывающий тег для описания связей документов. Атрибут xmlns — означает, что используется пространство имен, от сюда и название самого атрибута — xml NameSpace.

Далее идут 3 строки связей с документами. У каждого есть атрибуты: Id — уникальное имя для связи, Type — ссылка на стандарт, описывающий нужный нам тип документа, Target — путь к исполняемому файлу.

Разбор docProps/app.xml

Содержимое данного файла примерно такая (не все элементы могут присутствовать и иметь тот же вид, что и у меня):

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties" xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes">
    <Application>Microsoft Excel</Application>
    <DocSecurity>0</DocSecurity>
    <ScaleCrop>false</ScaleCrop>
    <HeadingPairs>
        <vt:vector size="2" baseType="variant">
            <vt:variant>
                <vt:lpstr>Worksheets</vt:lpstr>
            </vt:variant>
            <vt:variant>
                <vt:i4>1</vt:i4>
            </vt:variant>
        </vt:vector>
    </HeadingPairs>
    <TitlesOfParts>
        <vt:vector size="1" baseType="lpstr">
            <vt:lpstr>Лист 1</vt:lpstr>
        </vt:vector>
    </TitlesOfParts>
    <Company></Company>
    <LinksUpToDate>false</LinksUpToDate>
    <SharedDoc>false</SharedDoc>
    <HyperlinksChanged>false</HyperlinksChanged>
    <AppVersion>14.0300</AppVersion>
</Properties>

Первая строка нам уже знакома.

Во второй строке открывающий тег properties и эта строка похожа на рассмотренную нами ранее.

Третья строка содержит название приложения. В данном случае — Microsoft Excel (что не удивительно). Данную строку лучше не изменять, ибо приложение упадет.

Следующая строка:

<DocSecurity>0</DocSecurity>

Означает безопасность документа и в зависимости от числа имеет следующий посыл:

0 — Документ не защищен

1 — Документ защищен паролем.

2 — Рекомендуется открывать документ только для чтения.

4 — Документ принудительно открыт только для чтения.

8 — Документ заблокирован для заметок.

Строка:

<ScaleCrop>false</ScaleCrop>

указывает режим отображения эскиза документа. Установите для этого элемента значение TRUE, чтобы включить масштабирование эскиза документа на экране. Установите для этого элемента значение FALSE, чтобы включить обрезку эскиза документа, чтобы отображались только те разделы, которые соответствуют отображаемому значению (из документации microsoft).

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

Внутри HeadingPairs мы имеем 1 векторный контент, в котором имеются 2 его части (подробнее о векторах и baseType можно почитать в документации microsoft).

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

Следующий тег — TitlesOfParts. Он описывает наименования частей документа. в данном случае — названия листов в книге. Здесь также указывается количество частей векторного контента.

В теге Company можно записать название компании.

Следующий элемент — LinksUpToDate — указывает, актуальны ли гиперссылки в документе. Установите для этого элемента значение TRUE, чтобы показать, что гиперссылки обновлены. Установите для этого элемента значение FALSE, чтобы указать, что гиперссылки устарели (из документации microsoft).

Элемент SharedDoc указывает, является ли этот документ в настоящее время общим для нескольких производителей. Если для этого элемента установлено значение TRUE, производителям следует проявлять осторожность при обновлении документа.

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

Тег AppVersion указывает версию используемого приложения Excel при создании файла

Разбор docProps/core.xml

Содержимое файла примерно таково:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<cp:coreProperties xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dcmitype="http://purl.org/dc/dcmitype/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <dc:creator>Виктор</dc:creator>
  <dcterms:created xsi:type="dcterms:W3CDTF">2006-09-16T00:00:00Z</dcterms:created>
  <dcterms:modified xsi:type="dcterms:W3CDTF">2006-09-16T00:00:00Z</dcterms:modified>
</cp:coreProperties>

Первая строка нам уже знакома.

Во второй строке открывающий тег cp:coreProperties и эта строка похожа на рассмотренную нами ранее. Внутри него описываются свойства приложения:

dc:creator — Имя создателя документа;

dcterms:created — дата и время создания файла;

dcterms:modified — дата и время последнего изменения файла;

Разбор xl/_rels/workbook.xml.rels

Примерное содержимое файла:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
    <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet1.xml"/>
    <Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/>
    <Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" Target="theme/theme1.xml"/>
    <Relationship Id="rId4" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings" Target="sharedStrings.xml"/>
    <Relationship Id="rId5" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/calcChain" Target="calcChain.xml"/>
</Relationships>

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

Здесь записаны зависимости всех листов в книге, файла со строковыми значениями, цепочками вычислений и прочих файлов (мы разберем эти файлы дальше)

Разбор xl/printerSettings/printerSettings1.bin

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

Разбор xl/theme/theme1.xml

У меня не было надобностей разбирать этот файл, поэтому пока не буду описывать его работу. Но если кому-то понадобится (не знаю зачем) подробный разбор этого файла — я постараюсь сделать это.

Разбор xl/worksheets/_rels/sheet1.xml.rels

Содержимое этого файла может быть следующим:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
  <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/printerSettings" Target="../printerSettings/printerSettings1.bin"/>
</Relationships>

Здесь описана одна зависимость с файлом xl/printerSettings/printerSettings1.bin — настройками для печати.

Разбор xl/worksheets/sheet1.xml

Начинается самое интересное и большое в этой статье.

Начинается такой файл с обычного объявления типа документа xml и некоторых настроек:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac">
  <dimension ref="A1"/>
  <sheetViews>
    <sheetView tabSelected="1" workbookViewId="0">
      <selection activeCell="J10" sqref="J10"/>
      <pane ySplit="1" topLeftCell="A2" activePane="bottomRight" state="frozen"/>
    </sheetView>
  </sheetViews>
  <sheetFormatPr defaultRowHeight="15" x14ac:dyDescent="0.25"/>
  <cols>
    <col min="1" max="1" width="12" customWidth="1"/>
    <col min="3" max="5" width="14" customWidth="1"/>
    <col min="6" max="7" width="31" customWidth="1"/>
  </cols>
  <sheetData/>
  <mergeCells count="40">
    <mergeCell ref="G15:I15"/>
    <mergeCell ref="E3:F3"/>
    <mergeCell ref="E4:F4"/>
  </mergeCells>
  <autoFilter ref="A1:N1"/>
  <printOptions headings="1" gridLines="1"/>
  <pageMargins left="0.7" right="0.7" top="0.7" bottom="0.7" header="0.3" footer="0.3"/>
  <pageSetup paperSize="9" pageOrder="overThenDown" orientation="portrait" blackAndWhite="1" draft="1" cellComments="atEnd" errors="NA" r:id="rId1"/>
</worksheet>

Строка третья означает размер экспортируемого диапазона (с какой по какую ячейку находятся данные).

В теге sheetViewselection описывается выделенная клетка (или диапазон клеток).

Атрибут activeCell — активная ячейка, sqref — выделенная ячейка или диапазон ячеек.

такая строка может выглядеть и вот так:

<selection activeCellId="2" sqref="A1:B2 B2:C3 A1:C3"/>

Здесь уже вместо атрибута activeCell стоит activeCellId, потому что в атрибуте sqref мы видим несколько диапазонов. исходя из этого выясняем, что активный диапазон является A1:C3. на изображении ниже показано, как выглядит такой вариант выделения ячеек.

Выделенные ячейки

Выделенные ячейки

Про тег pane, sheetFormatPr и cols хорошо рассказано в статье от @Lachrimae:

Собственно, закрепление строки — тег <pane />. И вот какие здесь использованы атрибуты:

ySplit — показывает количество закрепленных строк. Для закрепления столбцов есть аналогичный атрибут xSplit;

topLeftCell — указание левой верхней ячейки, видимой по умолчанию НЕзакрепленной области;

activePane — указание местонахождения НЕзакрепленной области. В руководствах сказано, что этот атрибут регулирует, с какой стороны будет НЕзакрепленная область. Правда, попробовав разные значения, я почему-то получил одинаковый результат. Как вариант «by default» я для себя выбрал bottomRight;

state — указатель состояния закрепленной области. Для простого закрепления строки используется значение frozen

Тег <sheetFormatPr />. Пример:

<sheetFormatPr defaultRowHeight="15" x14ac:dyDescent="0.25"/>

Интересен нам здесь в основном атрибут defaultRowHeight, то есть высота столбца по умолчанию. Стандартный, привычный нам вариант — 15 у.е. Если назначить его, скажем, 30 у.е., то строки, для которых высота не указана отдельно, станут в 2 раза выше. Однако, для того чтоб применить значение, отличное от дефолтного, необходимо указать атрибут customHeight со значением «true». Выглядит это примерно так:

<sheetFormatPr defaultRowHeight="30" customHeight="true" x14ac:dyDescent="0.25"/>

Тег </cols>. Помогает установить ширину столбцов отличную от дефолтной. В заполненном виде выглядит примерно так:

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

Атрибут min — первый столбец группы;

Атрибут max — последний столбец группы;

Атрибут width — ширина столбца из группы;

Атрибут customWidth — флаг применения кастомной ширины, без него ширина все равно будет дефолтной;

Тег sheetData — описание содержимого ячеек и их настроек.

здесь структура такова:

<sheetData>
  <row r="1" spans="1:5" ht="18" customHeight="1" x14ac:dyDescent="0.25">
    <c r="A1">
      <v>1</v>
    </c>
    <c r="B1" t="s">
      <v>0</v>
    </c>
    <c r="C1" t="s">
      <v>1</v>
    </c>
    <c r="D1" t="s">
      <v>2</v>
    </c>
    <c r="E1">
      <v>1</v>
    </c>
  </row>
  <row r="4" spans="1:5" x14ac:dyDescent="0.25">
    <c r="A4" t="s">
      <v>2</v>
    </c>
    <c r="B4">
      <f>SUM(A1:E1)</f>
      <v>2</v>
    </c>
  </row>
</sheetData>

В Excel это будет выглядеть вот так:

Ячейки с данными

Ячейки с данными

Давайте разбираться, что же все-таки в коде происходит.

Мы видим два тега row — это наши строки. У каждой есть атрибут r — это номер строки. Атрибут spans означает сколько столбцов задействовано, dyDescent — вертикальное расстояние в пикселях между ячейками. Атрибут ht устанавливает высоту всей строки в пунктах, а тег customHeight говорит, что мы используем нестандартную высоту строки.

В теге row есть теги c — это ячейки в строке. у каждого тега есть атрибут r — означающий позицию ячейки. Но атрибут t — присутствует не у всех, потому что запись t=»s» — означает, что у ячейки установлен тип строки, а у кого этого атрибута нет — тип устанавливается стандартный — числовой. Еще у тегов c может присутствовать атрибут s, в котором записывается номер применяемого к ячейке стиля из файла xl/styles.xml (мы доберемся до него позже).

Внутри тегов c есть теги v — это наши значения, записываемые в ячейки. Но не все так просто. Те значения, которые находятся в теге c без атрибута t — те значения записываются без изменений, т.е. записывается в ячейку само число из тега v, а вот те значения, которые находятся в теге c с атрибутом t — уже обрабатываются по-другому: в теге v записан порядковый номер строки в файле xl/sharedStrings.xml (мы доберемся до него позже). В ячейку уже записывается строка, которая имеет порядковый номер, записанный в теге v.

Но мы можем заметить, что одна ячейка имеет помимо тега v еще тег f. Это тег с формулой, в данном случае формула означает: сумма ячеек от A1 до E1. А в теге v записан уже посчитанный ответ. Делать это не обязательно, но если не записать — то при открытии документа excel предложит сохранить изменения, т.к. он сам автоматически посчитал и записал этот результат.

С тегом sheetData разобрались, идем дальше.

Про теги mergeCells и autoFilter снова обратимся к статье от @Lachrimae:

Тег <mergeCells />.

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

<mergeCells count="40">
  <mergeCell ref="G15:I15"/>
  <mergeCell ref="E3:F3"/>
  <mergeCell ref="E4:F4"/>
</mergeCells>

Как видно, одна объединенная ячейка обозначена одним тегом <mergeCell /> с единственным атрибутом ref, задающим диапазон объединения.

Тег <autoFilter />. Фильтры, которые так любят видеть в отчетах наши пользователи. В заполненном виде тег выглядит так:

<autoFilter ref="A1:N1"/>

Нетрудно понять, что атрибут ref задает зону, занимаемую активными ячейками фильтров.

Тег printOptions — параметры печати. Атрибут headings — означает, что будут печататься заголовки, а атрибут gridLines — что будут печататься линии сетки.

Тег pageMargins задает поля сверху, снизу, справа, слева, у заголовков и у подвала для печатаемой страницы.

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

Атрибут paperSize — устанавливает размер бумаги.

Используемые значения:

Значение

Описание

16

10 в. x 14 в.

17

11 в. x 17 в.

8

A3 (297 мм x 420 мм)

9

A4 (210 мм x 297 мм)

10

A4 Small (210 мм x 297 мм)

11

A5 (148 мм x 210 мм)

12

B4 (250 мм x 354 мм)

13

A5 (148 мм x 210 мм)

24

Лист размеров C

25

Лист размеров D

20

Конверт #10 (4-1/8 в. x 9-1/2 в.)

21

Конверт #11 (4-1/2 в. x 10-3/8 in.)

22

Конверт #12 (4-1/2 в. x 11 in.)

23

Конверт #14 (5 в. x 11-1/2 в.)

19

Конверт #9 (3-7/8 в. x 8-7/8 in.)

33

Конверт B4 (250 мм x 353 мм)

34

Конверт B5 (176 мм x 250 мм)

35

Конверт B6 (176 мм x 125 мм)

29

Конверт C3 (324 мм x 458 мм)

30

Конверт C4 (229 мм x 324 мм)

28

Конверт C5 (162 мм x 229 мм)

31

Конверт C6 (114 мм x 162 мм)

32

Конверт C65 (114 мм x 229 мм)

27

DL конверта (110 мм x 220 мм)

36

Конверт (110 мм x 230 мм)

37

Envelope Monarch (3-7/8 in. x 7-1/2 in.)

38

Конверт (3-5/8 в. x 6-1/2 in.)

26

Лист размеров E

7

Executive (7-1/2 в. x 10-1/2 in.)

41

Немецкий юридический фанфолд (8-1/2 в. x 13 in.)

40

Немецкий юридический фанфолд (8-1/2 в. x 13 in.)

39

Стандартный фанфолд США (14-7/8 в. x 11 in.)

14

Фолио (8-1/2 в. x 13 in.)

4

Книга (17 в. x 11 in.)

5

Юридический (8-1/2 в. x 14 in.)

1

Письмо (8-1/2 в. x 11 in.)

2

Letter Small (8-1/2 in. x 11 in.)

18

Примечание (8-1/2 в. x 11 in.)

15

Quarto (215 мм x 275 мм)

6

Заявление (5-1/2 в. x 8-1/2 in.)

3

Таблоид (11 в. x 17 in.)

256

Пользовательский

Атрибут pageOrder — направление печати. Если значение «overThenDown» — то будет печататься слева направо, потом нижняя часть снова слева направо и т.д. Если такого атрибута нет — то печататься будет сначала вся левая сторона сверху-вниз, потом та часть, что справа и т.д.

Атрибут orientation — задает ориентацию листов. «portrait» — портретная (вертикальная) ориентация, «landscape» — альбомная (горизонтальная) ориентация.

Атрибут blackAndWhite — если установлена 1 ил true — лист будет напечатан в черно-белом варианте.

Атрибут draft — если установлена 1 ил true — лист будет напечатан без графики.

Атрибут cellComments — печать комментариев к ячейкам. Используемые значения:

  • AsDisplayed — Распечатать Комментарии Как отображается;

  • AtEnd — Печать в конце;

  • None — Не печатать.

Атрибут errors Печать обработки ошибок.

  • Blank Показать ошибки ячейки как пустые;

  • Dash — Ошибки ячейки Dash;

  • Displayed — Отображение ошибок ячейки;

  • NA — Отображает «NA».

Атрибут r:id — идентификатор настроек.

Разбор xl/caclChain.xml

По традиции, начнем с содержимого файла:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<calcChain xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
  <c r="B4" i="1"/>
</calcChain>

Здесь нам важна строка 3. видим тег c — наша ячейка, у нее есть атрибут r — адрес ячейки. Индексный атрибут i указывает индекс листа, с которым связана ячейка.

Разбор xl/sharedStrings.xml

Обратимся к статье от @Lachrimae:

Представим, что у нас есть таблица, заполненная строковыми данными, и что она большая. При этом крайне маловероятно, что все значения в ней будут уникальны. Некоторые из них нет-нет, да повторятся где-нибудь в разных частях таблицы. Хранить такой массив «как есть» внутри XML-разметки листа нерационально с точки зрения ресурсов ПК. Поэтому все строковые значения вынесены в отдельный файл, /xl/sharedStrings.xml. Часть его, которая нас интересует, выглядит, допустим, так:

<sst xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" count="4" uniqueCount="3">
    <si><t>Вася</t></si>
    <si><t>Петя</t></si>
    <si><t>Саша</t></si>
</sst>

Обратите внимание на атрибуты тега <sst /> «count» и «uniqueCount»: их значения различаются. Дело в том, что в книге одну из строк я использовал дважды. При этом атрибуты не обязательны, то есть если их убрать, то Excel ошибки не выдаст, но при сохранении файла нарисует опять.

Здесь же можно сказать, что здесь, внутри тега <si /> можно играть с настройками шрифта. Для этого используется доработанная напильником система пробегов, применяемая в MS Word (до него мы еще доберемся). Выглядит это примерно так:

    <si>
        <r>
            <t xml:space="preserve">Мама </t>
        </r>
        <r>
            <rPr>
                <b/>
            </rPr>
            <t>мыла</t>
        </r>
        <r>
            <rPr>
                <sz val="18"/>
            </rPr>
            <t xml:space="preserve"> раму</t>
        </r>
    </si>

Обратите внимание: в корневой тег <si/> в предыдущем примере был встроен непосредственно тег <t/>, содержавший текст. Здесь же он обернут тегом <r/>, то есть Run; по-русски его принято назвать «пробег». Пробег — это, если в двух словах — кусок текста, имеющий одинаковые стилевые настройки.

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

Первый:

<r>
    <t xml:space="preserve">Мама </t>
</r>

Этот пробег не содержит секции <rPr/>, поэтому использует стилевые настройки ячейки, в которой находится. В нем интересно другое: атрибут xml:space=«preserve». Дело в том, что по умолчанию что Excel, что Word обрезают концевые пробелы со всех пробегов. Может показаться, что в этом случае в месте стыка пробегов всегда должна получаться примерно такая картина: «ВасяПетя». Но по опыту общения с тем же MS Word мы знаем, что это не так. Из-за чего? Вот как раз из-за xml:space=«preserve».

Второй:

<r>
    <rPr>
        <b/>
    </rPr>
    <t>мыла</t>
</r>

Здесь нет атрибута xml:space=«preserve». Нам без разницы, что Excel сделает с концевыми пробелами, которых нет. Зато есть блок <rPr/>. В принципе, в него можно поместить любые настройки шрифта, которые только есть в Excel. Я же сделал всего один, чтобы не раздувать объем примера.

Третий:

<r>
    <rPr>
        <sz val="18"/>
    </rPr>
    <t xml:space="preserve"> раму</t>
</r>

А здесь у нас есть и блок настроек шрифта, и сохранение концевых пробелов.

Ну и еще коротенькая ремарка. Если есть необходимость сделать многострочную запись в ячейке, то здесь в строке просто будет обычный символ переноса, chr(10). Сам атрибут многострочности ячейки расположен в файле разметки листа. В однострочной ячейке символ переноса будет проигнорирован. Excel просто сделает вид, что его нет.

Добавлю: каждый тег si имеет порядковый номер, начиная с 0. Он нигде не записывается. Этот номер и записывается в файле xl/worksheets/sheet1.xml в теге sheetData, который мы рассматривали ранее.

Разбор xl/styles.xml

Снова обратимся к статье от @Lachrimae. Буду добавлять от себя дополнительную информацию.

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

1. Шрифты:

<fonts count="2" x14ac:knownFonts="1">
    <font>
        <sz val="11"/>
        <color theme="1"/>
        <name val="Calibri"/>
        <family val="2"/>
        <scheme val="minor"/>
    </font>
    <font>
        <b/>
        <sz val="11"/>
        <color theme="1"/>
        <name val="Calibri"/>
        <family val="2"/>
        <charset val="204"/>
        <scheme val="minor"/>
    </font>
</fonts>

Как можно понять, здесь перечислены только уникальные стили оформления текста, использованные в книге. Каждый тег — один стиль. Вложенные теги — особенности стиля, такие как полужирное написание (тег <b/>), кегль (<sz/>) и другие.

На месте тега <b/> можно написать:

  • <i/> — курсив;

  • <u/> — подчеркнутый,
    либо <u val=»double»/> — двойное подчеркивание;

  • <strike/> — зачеркнутый;

  • <vertAlign val=»superscript»/> — надстрочный текст,
    либо <vertAlign val=»subscript»/> — подстрочный текст;

либо сочетание нескольких тегов.

Если хотите установить цвет шрифта какой-нибудь свой (возьмем #123456), то в теге color вместо атрибута theme пишем rgb и вставляем hex-код цвета, должно получиться вот так:

<color rgb="123456"/>

2. Заливка ячеек:

<fills count="2">
    <fill>
        <patternFill patternType="none"/>
    </fill>
    <fill>
        <patternFill patternType="gray125"/>
    </fill>
</fills>

Как видно, первый вариант — без заливки вообще, а второй — сплошная заливка библиотечного цвета «gray125».

Здесь тот же принцип с установкой своего цвета, только немного по-другому записывается:

<fill>
	<patternFill patternType="solid">
    <fgColor rgb="123456"/>
    <bgColor indexed="64"/>
  </patternFill>
</fill>

Тег fgcolor — отвечает за цвет переднего плана, а bgcolor — за цвет заднего плана (indexed=»64″ — черный цвет).

У тега patternFill атрибут patternType может иметь следующие значения:

  • none — Нет заливки;

  • solid — Сплошная заливка; (пример выше)

  • darkGray — Серый 75%;

    Пример

    <fill>
        <patternFill patternType="darkGray">
        <fgColor rgb="FF0000"/>
        <bgColor rgb="00FF00"/>
      </patternFill>
    </fill>

    Цвет выглядит вот так:

    Цвет ячейки

    Цвет ячейки

    Здесь мы можем наблюдать, что цвета расположены в сетку

  • mediumGray — Серый 50%;

    Пример

    <fill>
        <patternFill patternType="mediumGray">
        <fgColor rgb="FF0000"/>
        <bgColor rgb="00FF00"/>
      </patternFill>
    </fill>

    Цвет выглядит вот так:

    Цвет ячейки

    Цвет ячейки

    Здесь сетка уже поменьше и цвет из тега fgcolor уже меньше прорисовывается.

  • lightGray — Серый 25%;

    Пример

    <fill>
        <patternFill patternType="lightGray">
        <fgColor rgb="FF0000"/>
        <bgColor rgb="00FF00"/>
      </patternFill>
    </fill>

    Цвет выглядит вот так:

    Цвет ячейки

    Цвет ячейки

    Здесь сетка еще меньше и цвет из тега fgcolor еще меньше прорисовывается.

  • gray125 — Серый 12.5%;

    Пример

    <fill>
        <patternFill patternType="gray125">
        <fgColor rgb="FF0000"/>
        <bgColor rgb="00FF00"/>
      </patternFill>
    </fill>

    Цвет выглядит вот так:

    Цвет ячейки

    Цвет ячейки

    Посыл, думаю, понятен

  • gray0625 — Серый 0.025%

    Пример

    <fill>
        <patternFill patternType="gray0625">
        <fgColor rgb="FF0000"/>
        <bgColor rgb="00FF00"/>
      </patternFill>
    </fill>

    Цвет выглядит вот так:

    Цвет ячейки

    Цвет ячейки
  • darkHorizontal — Полосатый цвет с горизонтальными линиями;

    Пример

    <fill>
        <patternFill patternType="darkHorizontal">
        <fgColor rgb="FF0000"/>
        <bgColor rgb="00FF00"/>
      </patternFill>
    </fill>

    Цвет выглядит вот так:

    Цвет ячейки

    Цвет ячейки
  • darkVertical — Полосатый цвет с вертикальными линиями;

    Пример

    <fill>
        <patternFill patternType="darkVertical">
        <fgColor rgb="FF0000"/>
        <bgColor rgb="00FF00"/>
      </patternFill>
    </fill>

    Цвет выглядит вот так:

    Цвет ячейки

    Цвет ячейки
  • darkDown — Полосатый цвет с диагональными линиями сверху-вниз;

    Пример

    <fill>
        <patternFill patternType="darkDown">
        <fgColor rgb="FF0000"/>
        <bgColor rgb="00FF00"/>
      </patternFill>
    </fill>

    Цвет выглядит вот так:

    Цвет ячейки

    Цвет ячейки
  • darkUp — Полосатый цвет с диагональными линиями снизу-вверх;

    Пример

    <fill>
        <patternFill patternType="darkUp">
        <fgColor rgb="FF0000"/>
        <bgColor rgb="00FF00"/>
      </patternFill>
    </fill>

    Цвет выглядит вот так:

    Цвет ячейки

    Цвет ячейки
  • darkGrid — Диагональный клетчатый;

    Пример

    <fill>
        <patternFill patternType="darkGrid">
        <fgColor rgb="FF0000"/>
        <bgColor rgb="00FF00"/>
      </patternFill>
    </fill>

    Цвет выглядит вот так:

    Цвет ячейки

    Цвет ячейки

    В этом варианте сетки четко видно, клетки цветов одинаковые и их поровну. Как шахматная доска

  • darkTrellis — Толстый диагональный клетчатый;

    Пример

    <fill>
        <patternFill patternType="darkTrellis">
        <fgColor rgb="FF0000"/>
        <bgColor rgb="00FF00"/>
      </patternFill>
    </fill>

    Цвет выглядит вот так:

    Цвет ячейки

    Цвет ячейки
  • lightHorizontal — Полосатый цвет с горизонтальными тонкими линиями;

    Пример

    <fill>
        <patternFill patternType="lightHorizontal">
        <fgColor rgb="FF0000"/>
        <bgColor rgb="00FF00"/>
      </patternFill>
    </fill>

    Цвет выглядит вот так:

    Цвет ячейки

    Цвет ячейки
  • lightVertical — Полосатый цвет с вертикальными тонкими линиями;

    Пример

    <fill>
        <patternFill patternType="lightVertical">
        <fgColor rgb="FF0000"/>
        <bgColor rgb="00FF00"/>
      </patternFill>
    </fill>

    Цвет выглядит вот так:

    Цвет ячейки

    Цвет ячейки
  • lightDown — Полосатый цвет с диагональными тонкими линиями сверху-вниз;

    Пример

    <fill>
        <patternFill patternType="lightDown">
        <fgColor rgb="FF0000"/>
        <bgColor rgb="00FF00"/>
      </patternFill>
    </fill>

    Цвет выглядит вот так:

    Цвет ячейки

    Цвет ячейки
  • lightUp — Полосатый цвет с диагональными тонкими линиями снизу-вверх;

    Пример

    <fill>
        <patternFill patternType="lightUp">
        <fgColor rgb="FF0000"/>
        <bgColor rgb="00FF00"/>
      </patternFill>
    </fill>

    Цвет выглядит вот так:

    Цвет ячейки

    Цвет ячейки
  • lightGrid — Тонкий горизонтальный клетчатый;

    Пример

    <fill>
        <patternFill patternType="lightGrid">
        <fgColor rgb="FF0000"/>
        <bgColor rgb="00FF00"/>
      </patternFill>
    </fill>

    Цвет выглядит вот так:

    Цвет ячейки

    Цвет ячейки
  • lightTrellis — Тонкий диагональный клетчатый;

    Пример

    <fill>
        <patternFill patternType="lightTrellis">
        <fgColor rgb="FF0000"/>
        <bgColor rgb="00FF00"/>
      </patternFill>
    </fill>

    Цвет выглядит вот так:

    Цвет ячейки

    Цвет ячейки

Можно еще заливку сделать градиентом:

  • Горизонтальный, вертикальный, диагональный:

    Примеры

    2 цвета:

    <fill>
    	<gradientFill degree="90">
        <stop position="0">
          <color rgb="0000FF"/>
        </stop>
        <stop position="1">
          <color rgb="FFFFFF"/>
        </stop>
      </gradientFill>
    </fill>

    градиент 2 цвета

    градиент 2 цвета

    Атрибут degree — угол поворота, изменяя который можно менять направление градиента.

    3 цвета:

    <fill>
    	<gradientFill degree="90">
        <stop position="0">
          <color rgb="0000FF"/>
        </stop>
        <stop position="0.5">
          <color rgb="FFFFFF"/>
        </stop>
        <stop position="1">
          <color rgb="FF0000"/>
        </stop>
      </gradientFill>
    </fill>

    Градиент 3 цвета

    Градиент 3 цвета
  • От угла:

    Примеры

    От левого верхнего угла

    <fill>
      <gradientFill type="path">
        <stop position="0">
        	<color rgb="0000FF"/>
        </stop>
        <stop position="1">
        	<color rgb="FFFFFF"/>
        </stop>
      </gradientFill>
    </fill>

    Градиент от угла

    Градиент от угла

    От правого верхнего угла — в тег gradientFill добавить атрибуты left=»1″ right=»1″, чтобы получилось:

    <gradientFill left="1" right="1" type="path">

    От левого нижнего угла — в тег gradientFill добавить атрибуты bottom=»1″ top=»1″;

    От правого нижнего угла — в тег gradientFill добавить атрибуты bottom=»1″ top=»1″ left=»1″ right=»1″;

  • От центра:

    <fill>
      <gradientFill bottom="0.5" top="0.5" right="0.5" left="0.5" type="path">
        <stop position="0">
        	<color rgb="0000FF"/>
        </stop>
        <stop position="1">
        	<color rgb="FFFFFF"/>
        </stop>
      </gradientFill>
    </fill>

    Градиент от центра

    Градиент от центра

3. Границы:

<borders count="2">
    <border>
        <left/>
        <right/>
        <top/>
        <bottom/>
        <diagonal/>
    </border>
    <border>
        <left style="thin">
            <color indexed="64"/>
        </left>
        <right style="thin">
            <color indexed="64"/>
        </right>
        <top style="thin">
            <color indexed="64"/>
        </top>
        <bottom style="thin">
            <color indexed="64"/>
        </bottom>
        <diagonal/>
    </border>
</borders>

Как видно, одно наименование здесь состоит из пяти элементов, 4 основных границы и диагональная, то есть все то, что можно настроить через GUI самого Excel.

Атрибут style означает стиль границы и может иметь следующие значения:

  • thin – тонка сплошная;

  • hair – мелкая пунктирная;

  • dotted – точечная пунктирная;

  • dashed – пунктирная линия;

  • dashDot – пунктир линия точка;

  • dashDotDot – пунктир линия точка точка;

  • double – двойная сплошная;

  • medium – сплошная средней толщины;

  • mediumDashed – пунктирная линия средней толщины;

  • mediumDashDot – пунктир линия точка средней толщины;

  • mediumDashDotDot – пунктир линия точка точка средней толщины;

  • slantDashDot – косая пунктир линия точка средней толщины;

  • thick – сплошная большой толщины.

Для установки цвета границы используйте уже известную нам запись:

<color rgb="123FFF"/>

Чтобы установить диагональную границу, нужно в тег diagonal записать атрибуты:

  • diagonalDown=»1″ — для границы сверху-вниз;

  • diagonalUp=»1″ — для границы снизу вверх.

Должно получиться:

<diagonal diagonalDown="1"/>
<diagonal diagonalUp="1"/>
<diagonal diagonalDown="1" diagonalUp="1"/>

Ну и не забудьте внутри тега diagonal записать цвет для границы — тег color.

4. Стили ячеек:

<cellXfs count="4">
    <xf numFmtId="0" fontId="0" fillId="0" borderId="0" xfId="0"/>
    <xf numFmtId="0" fontId="1" fillId="0" borderId="0" xfId="0" applyFont="1" applyAlignment="1">
        <alignment wrapText="1"/>
    </xf>
    <xf numFmtId="0" fontId="0" fillId="0" borderId="1" xfId="0" applyBorder="1" applyAlignment="1">
        <alignment horizontal="center" vertical="center"/>
    </xf>
    <xf numFmtId="0" fontId="1" fillId="2" borderId="1" xfId="0" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1">
        <alignment horizontal="center" vertical="center"/>
    </xf>
</cellXfs>

А вот здесь надо объяснить подробнее. Когда в файле листа мы будем указывать стиль ячейки, мы будем ссылаться как раз на эту секцию. Каждый тег <xf />, представляющий собой один стиль, является собранием ссылок на предыдущие секции, то есть он сам по себе не содержит объявления шрифта, границ и заливки. Рассмотрим интересные атрибуты ближе:

numFmtId — указание формата текста в ячейке (дата, валюта, число, текст, …). Полный перечень этих типов есть здесь

fontId, fillId, borderId — ссылка на шрифт/заливку/границы (см. секцию 1, 2 и 3 соответственно). Нумерация начинается с 0.

— applyFont, applyFill, applyBorder — указание на то, что при оформлении этой ячейки вообще используется кастомный шрифт/заливка/границы. По умолчанию 0, так что можно не указывать вообще, как видно на примере в элементе #0.

applyAlignment — указание на то, что выравнивание текста в ячейке будет отличаться от стандартного. По умолчанию 0, но если указано «1», то в родительский тег <xf /> встраивается тег <alignment />, как видно на примере начиная с #1.

В теге alignment могут быть атрибуты:

  • horizontal — выравнивание текста в горизонтальной плоскости. Может иметь значения: left – по левому краю, center – по центру, right – по правому краю, justify – по ширине, fill — заполнение, distributed – распределенное

  • vertical — выравнивание текста по вертикали. Значения: top – по верхнему краю, center – по центру, bottom – по нижнему краю, justify – по высоте, distributed – распределенное

  • textRotation — угол поворота текста. Если установить 255 — то текст будет вертикальный.

  • wrapText=»1″ — перенос текста

Разбор xl/workbook.xml

Из статьи от @Lachrimae:

Основное его назначение — манифест, то есть перечень листов, из которых наша книга Excel, собственно, и состоит.
Выглядит этот перечень, к примеру, так:

<sheets>
    <sheet name="Лист1" sheetId="1" r:id="rId1"/>
    <sheet name="Лист2" sheetId="2" r:id="rId2"/>
    <sheet name="Лист3" sheetId="3" r:id="rId3"/>
    <sheet name="Лист4" sheetId="4" r:id="rId4"/>
</sheets>

Это значит, что в книге 4 листа, и их имена указаны в атрибутах name. Каждому тегу должен соответствовать файл в папке %file%/xl/worksheets. Excel сам знает, как должны называться эти файлы и при попытке их переименовать, сочтет всю книгу поврежденной.

Разбор [Content_Types].xml

Содержимое файла может быть следующим:

<?xml version="1.0" encoding="UTF-8" standalone="true"?>
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
  <Default ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.printerSettings" Extension="bin"/>
  <Default ContentType="application/vnd.openxmlformats-package.relationships+xml" Extension="rels"/>
  <Default ContentType="application/xml" Extension="xml"/>
  <Override ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml" PartName="/xl/workbook.xml"/>
  <Override ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml" PartName="/xl/worksheets/sheet1.xml"/>
  <Override ContentType="application/vnd.openxmlformats-officedocument.theme+xml" PartName="/xl/theme/theme1.xml"/>
  <Override ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml" PartName="/xl/styles.xml"/>
  <Override ContentType="application/vnd.openxmlformats-package.core-properties+xml" PartName="/docProps/core.xml"/>
  <Override ContentType="application/vnd.openxmlformats-officedocument.extended-properties+xml" PartName="/docProps/app.xml"/>
  <Override ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml" PartName="/xl/sharedStrings.xml"/>
	<Override ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml" PartName="/xl/calcChain.xml"/>
</Types>

В этом файле прописываются определения типов всех файлов и их расположения.

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

Если в документе вы не используете, к примеру, формул, то строки 13 не будет записано.

Завершение

Я разобрал основные моменты содержания файла excel. Если вам будет интересно узнать про диаграммы и другие возможности excel — пишите в комментариях, я постараюсь сделать дополнение к этой статье из ваших просьб.

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

Если вам также будет интересно — напишу статью, как манипулировать с файлами excel посредством PHP/Java/Ruby.

Спасибо за внимание и уделенное время этой статье.

2 ответов


чтобы работать с электронными таблицами Excel или любыми другими документами Microsoft Office, я предлагаю вам изучить новый Office Open XML (OOXML), а не более ранний формат Microsoft Office XML, который вы цитируете.

OOXML дает преимущества над более ранние форматы Microsoft Office XML:

  • OOXML царит во многих зависимостях управления версиями, которые
    более ранний Office XML форматы.
  • OOXML определяется международным стандартом (ECMA-376).
  • OOXML использует более разумную систему упаковки (OPC); более ранний формат
    встраивает двоичный файл в большой монолитный XML-файл.
  • OOXML может представлять полную точность документа, включая макросы VBA,
    графические объекты, контуры, пользовательские виды и т. д.

стандартные форматы файлов ECMA-376 Office Open XML определяет словари для От OOXML.

ресурсы не Microsoft OOXML:

другие предоставили официальную документацию Microsoft. В дополнение к ссылкам организаций стандарта ECMA и ISO/IEC, которые я предоставил выше, вот некоторые полезные ресурсы помимо того, что Microsoft предоставляет:

  • Эрик Белый имеет обширную коллекцию учебные пособия,
    экранные слепки и примеры на OOXML
    . Эрик был разработчик
    отношения евангелист в Microsoft во время стандартизации OOXML и
    период развития. Его работы из этого периода необходимо прочитать для
    разработчики, желающие работать с OOXML.
  • сколько поймал Open XML?
  • открыть xml excel чтение значение ячейки
  • создание документа Excel с OpenXML sdk 2.0
  • простой OOXML отлично подходит для создания и изменения От OOXML. Он открыт
    источник.

Вы упомянули в своем вопросе желая найти «источник-теги и атрибуты». Вы можете скачать ссылку XSDs (а также ненормативные схемы RelaxNG) здесь. Есть также Office Open XML основы документа что есть много примеров и объяснений.


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

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

Что касается вашего запроса на источники:

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

дополнительные примечания:

  • при разработке XML-Excel, не забудьте использовать панель задач источник XML (разработчик -> XML -> источник).
  • Примечание ограничения и различия (форматов Microsoft Office XML) с Office Open XML (Office Open XML запущен с Office 2007).
  • интересно, что вы можете взять файл Excel (скажем, myfile.xlsx), измените его на myfile.zip или myfile.файлы XLSX.zip, и извлечь / изучить его содержимое. Файлы Xlsx — это просто zip-контейнеры. Это может быть поучительно (и трудоемкий.)

другие полезные ссылки:

  • Office Open XML Essentials.
  • представляем форматы файлов Office (2007) Open XML.
  • белая бумага с самого начала (обратите внимание, что http://www.openxmlformats.org перенаправляет на http://www.microsoft.com).
  • программа поддержка Office Open XML (таблицы и другие). Есть много открытых источников, и они включают программное обеспечение электронных таблиц, средства просмотра, фильтры и конвертеры, программную поддержку и т. д.

Это просто резюме указателей. Надеюсь, это поможет.


Трюк №95. Загрузка документа XML в Excel

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

В последние несколько лет язык XML (Extensible Markup Language, букв, «расширяемый язык разметки») стал распространенным форматом обмена информацией, и нет ничего необычного в том, что люди и организации отправляют друг другу файлы XML. Простые структуры, лежащие в основе XML, делают обмен информацией чрезвычайно простым, причем неважно, используют ли все стороны одно и то же программное обеспечение и браузеры. Однако до недавних пор, хотя общие утилиты XML стали широко распространены, заполнить пробел между документами XML и пользовательским интерфейсом было еще достаточно трудно. Microsoft Excel упрощает эту задачу, по крайней мере, для данных в сетке таблицы.

В этом трюке используются возможности Excel, доступные только в Excel для Windows старше 2003 года. Более ранние версии Excel не поддерживают их; эти возможности не поддерживаются и в существующих, и планируемых версиях Excel для Macintosh.

Начнем с простого документа XML, приведенного в листинге 8.1.

// Листинг 8.1. Простой документ XML для анализа в Excel 2003-10-05 0596005385 Off1ce 2003 XML Essentia1s

34.95 200 Zork’s Books

2003-10-05 0596002920 XML in a Nutshell. 2nd Edition

90 Zork’s Books 2003-10-05 0596002378 SAX2

300 Zork’s Books 2003-10-05 0596005385 Office 2003 XML Essentials

10 Books of Glory 2003-10-05 0596002920 XML in a Nutshell, 2nd Edition

25 Books of Glory 2003-10-07 0596002378 SAX2

5 Books of Glory 2003-10-18 0596002378 SAX2

15 Title Wave 2003-10-21 0596002920 XML in a Nutshell. 2nd Edition

15 Books for You

Этот документ можно открыть непосредственно в Excel командой Файл → Открыть (File → Open). Откроется диалоговое окно (рис. 8.1).

Рис. 8.1. Открытие файла XML в Excel

Если вы выберете переключатель XML-список (As an XML list), то увидите предупреждение, что Excel создаст собственную схему для этого документа, не имеющего схемы (рис. 8.2).

Рис. 8.2. Предупреждение Excel об отсутствии ссылок на схему

Щелкнув кнопку ОК, вы увидите, какой способ Excel выбрал для представления информации в открываемом документе в виде электронной таблицы (рис. 8.3). Обратите внимание, что Excel ожидает встретить формат даты, который используется для элемента даты, поэтому даты, импортированные как 2003-10-05, будут отображаться как 10/5/2003.

Рис. 8.3. Данные XML, представленные как XML-список в Excel

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

Раскрывающиеся списки в заголовках столбцов позволяют выбирать способ сортировки данных (по умолчанию данные выводятся в том порядке, в котором они записаны в исходном документе). Можно также включить отображение строки итогов Итог (Total); для этого можно воспользоваться панелью инструментов Список (List) или щелкнуть правой кнопкой мыши в любом месте списка и в контекстном меню выбрать команду Список → Строка итогов (List → Total Row). Когда строка итогов появится, выбрать вид итоговой информации можно будет в раскрывающемся меню (рис. 8.4).

Рис. 8.4. Выбор итогов для списка XML в Excel

Данные можно обновить, добавив при этом в обновляемую область информацию из документа XML с такой же структурой. Если у вас есть еще один документ с такой структурой, можете щелкнуть список правой кнопкой мыши, в контекстном меню выбрать команду XML → Импорт (XML → Import) и выбрать второй документ. Кроме того, после редактирования данные можно экспортировать обратно в файл XML, щелкнув список правой кнопкой мыши и выбрав в контекстном меню команду XML → Экспорт (XML → Export). Это превращает Excel в очень удобный инструмент редактирования простых XML-документов с табличной структурой.

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

// Листинг 8.2. Схема для данных о продаже книг

Обратите внимание, что элемент date определен как дата, а элемент ISBN определен как строка, а не как целое число. Если вы начнете с открытия этой схемы, а не документа, то заставите Excel загружать документ, сохранив ведущий нуль в ISBN.

На этот раз вы создадите список до загрузки документа XML, начав с пустого рабочего листа. Вам понадобится открыть область задач Источник XML (XML Source). Если она еще не открыта, нажмите сочетание клавиш Ctrl+Fl. Затем в раскрывающемся списке вверху области задач выберите Источник XML (XML Source) и вы увидите что-то похожее на рис. 8.6.

Рис. 8.6. Область задач Источник XML

Чтобы загрузить схему, щелкните кнопку Карты XML (XML Maps). Откроется диалоговое окно Карты XML (XML Maps) (рис. 8.7).

Рис. 8.7. Диалоговое окно Карты XML

Щелкните кнопку Добавить (Add), чтобы открыть схему, и выберите схему (рис. 8.8). Если схема не ограничивает документы одним начальным элементом, появится диалоговое окно с просьбой выбрать корневой элемент. Так как документы в этом примере начинаются с элемента sales, выберите «sales».

Рис. 8.8. Выбор XML-схемы

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

В диалоговом окне Карты XML (XML Maps) Excel сообщит, что схема была добавлена к электронной таблице. Если вы щелкнете кнопку ОК, то вернетесь в главное окно Excel и в области задач Источник XML (XML Source) появится диаграмма, отображающая структуру схемы. Теперь, когда у вас есть структура, можно создать список. Самый простой способ сделать это, особенно с небольшими документами, как наш, — перетащить значок sales на ячейку А1.

Теперь, обустроив дом для данных, нужно заселить его. Можно щелкнуть кнопку Импорт XML-данных (Import XML Data) на панели инструментов Список (List) или щелкнуть правой кнопкой мыши список и в контекстном меню выбрать кнопку XML → Импорт (XML → Import). Если вы выберете файл, который уже открывали ранее (в листинге 8.1), то увидите результат, как на рис. 8.3. Обратите внимание на добавление ведущих нулей к значениям, которые теперь являются текстовыми, как и должно быть.

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

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

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

Конвертация файлов XML в форматы Excel

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

Процесс конвертации

XML-файлы написаны на специальном языке разметки чем-то похожим на HTML веб-страниц. Поэтому у этих форматов довольно сходная структура. В то же время, Эксель – это в первую очередь программа, имеющая несколько «родных» форматов. Самые известные из них: Книга Excel (XLSX) и Книга Excel 97 – 2003 (XLS). Выясним основные способы конвертации файлов XML в эти форматы.

Способ 1: встроенный функционал Excel

Программа Excel отлично работает с файлами формата XML. Она может открывать их, изменять, создавать, сохранять. Поэтому самый простой вариант поставленной перед нами задачи — это открыть данный объект и сохранить его через интерфейс приложения в виде документов XLSX или XLS.

  1. Запускаем Эксель. Во вкладке «Файл» переходим по пункту «Открыть».

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

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

Открывается окно, похожее на окно для открытия, но с некоторыми отличиями. Теперь нам нужно сохранить файл. С помощью инструментов навигации переходим в директорию, где будет храниться преобразованный документ. Хотя можно его оставить и в текущей папке. В поле «Имя файла» при желании можно его переименовать, но это тоже не обязательно. Для нашей задачи основным является следующее поле – «Тип файла». Кликаем по этому полю.

Из предложенных вариантов выбираем Книга Excel или Книга Excel 97-2003. Первый из них более новый, второй – уже несколько устаревший.

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

    Способ 2: импорт данных

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

      Перейдя во вкладку «Файл», кликаем по пункту «Параметры».

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

    Переходим во вкладку «Разработчик». На ленте в блоке инструментов «XML» жмем на кнопку «Импорт».

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

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

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

    После этих действий таблица XML будет вставлена в окно программы. Для того чтобы сохранить файл в формате Excel кликаем по иконке в виде дискеты в верхнем левом углу окна.

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

    Способ 3: онлайн-конвертер

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

    1. Переходим на данный веб-ресурс с помощью любого браузера. На нем можно выбрать 5 способов загрузки конвертируемого файла:
      • С жесткого диска компьютера;
      • Из онлайн-хранилища Dropbox;
      • Из онлайн-хранилища Google Drive;
      • По ссылке из интернета.

    Так как в нашем случае документ размещен на ПК, то жмем на кнопку «С компьютера».

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

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

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

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

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

    Экспорт Excel в XML и наоборот

    Вы можете конвертировать файл Excel в файл данных XML или наоборот. Это позволяет обмениваться информацией между различными приложениями. Для начала откройте вкладку Developer (Разработчик).

    Вот данные, которые мы хотим преобразовать в файл XML:

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

      Excel для этой цели не подойдёт, поэтому откройте, к примеру, Блокнот и вставьте следующие строки:

    Примечание: Теги названы по именам столбцов, но вы можете дать им любое название. Например, вместо – .

    1. Сохраните файл как schema.xml.
    2. Откройте книгу Excel.
    3. Кликните по Source (Источник) на вкладке Developer (Разработчик). Откроется XML панель задач.
    4. Чтобы добавить карту XML, нажмите кнопку XML Maps (XML карты).Появится диалоговое окно XML Maps (Карты XML).
    5. Нажмите Add (Добавить).
    6. Выберите schema.xml и дважды кликните ОК.
    7. Теперь просто перетащите 4 элемента из дерева в XML панели задач на лист (строка 1).
    8. Нажмите кнопку Export (Экспорт) в разделе XML на вкладке Developer (Разработчик).
    9. Сохраните файл и нажмите Enter.

    Это экономит немало времени!

    Примечание: Для импорта XML-файла откройте пустую книгу. На вкладке Developer (Разработчик) нажмите кнопку Import (Импорт) и выберите XML-файл.

    Собрать данные из XML файлов в Excel и экспортировать

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

    Рассмотрим возможности использования его для формирования и обработки файлов веб-приложений. На конкретном примере изучим основы работы с XML в Excel.

    Как создать XML-файл из Excel

    XML – стандарт файла для передачи данных в Сети. Excel поддерживает его экспорт и импорт.

    Рассмотрим создание XML-файла на примере производственного календаря.

    1. Сделаем таблицу, по которой нужно создать XML файл в Excel и заполним ее данными.
    2. Создадим и вставим карту XML с необходимой структурой документа.
    3. Экспортируем данные таблицы в XML формат.
    1. Наша таблица – производственный календарь.
    2. Создаем в любом текстовом редакторе (например, «Блокнот») желаемую карту XML структуры для генерации файла сохраним. В данном примере буде использовать следующую карту структуры:
  • Открываем инструмент «Разработчик». Диалоговое окно «Источник» на вкладке XML.
  • Если программа Excel не видит карт XML, их нужно добавить. Жмем «карты XML». И указываем путь к нашему файлу с выше указанной схемой карты созданной в текстовом редакторе.
  • Добавить ОК.
  • В правой колонке появляются элементы схемы. Их нужно перетащить на соответствующие названия столбцов таблицы.
  • Проверяем возможен ли экспорт.
  • Когда все элементы будут сопоставлены, щелкаем правой кнопкой мыши по любой ячейке в таблице – XML – экспорт.
  • Сохраняем в XML файл.

    Другие способы получения XML-данных (схемы):

    1. Скачать из базы данных, специализированного бизнес-приложения. Схемы могут предоставляться коммерческими сайтами, службами. Простые варианты находятся в открытом доступе.
    2. Использовать готовые образцы для проверки карт XML. В образцах – основные элементы, структура XML. Копируете – вставляете в программу «Блокнот» — сохраняете с нужным расширением.

    Как сохранить файл Excel в формате XML

    Один из вариантов:

    1. Нажимаем кнопку Office. Выбираем «Сохранить как» — «Другие форматы».
    2. Назначаем имя. Выбираем место сохранения и тип файла – XML.

    Если выдает ошибку, книгу можно сохранить в виде таблицы XML 2003 либо веб-страницы. С этими форматами проблем, как правило, не возникает.

    1. Скачать конвертер XLC в XML. Либо найти сервис, с помощью которого можно экспортировать файл онлайн.
    2. Скачать с официального сайта Microsoft надстройку XML Tools Add-in. Она в бесплатном доступе.
    3. Открываем новую книгу. Кнопка Office – «Открыть».

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

    1. Меняем формат на «файлы XML». Выбираем нужный файл. Жмем «Открыть».
    2. Способ открытия – XML-таблица. ОК.
    3. Появляется оповещение типа

    Жмем ОК. С полученной таблицей можно работать, как с любым файлом Excel.

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

    1. Меню «Разработчик» — вкладка «Импорт».
    2. В диалоговом окне выбираем файл XML, который хотим преобразовать.
    3. Нажимаем «Импорт». Программа Excel предложит самостоятельно создать схему на основе полученных данных. Соглашаемся – ОК. Откроется окно, где нужно выбрать место для импортируемого файла.
    4. Назначаем диапазон для импорта. Лучше брать с «запасом». Жмем ОК.

    Созданную таблицу редактируем и сохраняем уже в формате Excel.

    Как собрать данные из XML файлов в Excel

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

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

    Чтобы настроить параметры привязки, откройте в меню «Разработчик» инструмент «Свойства карты».

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

    Это все ручные способы импорта и экспорта файлов.

    Excel «Из импорта данных XML» не будет добавлять новые столбцы

    В Excel 2010 имеется потрясающая функция «Данные из других источников» -> «Из импорта данных XML», позволяющая извлекать XML из веб-службы, кодирование не требуется. Прекрасно работает, но мой сервис добавил новую колонку в конце. Обновление соединения в Excel не добавляет новый столбец. Фактически, при создании второго соединения с точно таким же URL-адресом в той же электронной таблице новый столбец также не будет отображаться (хотя то же самое будет сделано в другой книге Excel). Очевидно, Excel как-то кеширует столбцы.

    Я нашел эту ссылку который описывает возможный обходной путь путем ручного взлома файла Excel; но это было 3 года назад. Конечно, сейчас есть лучший способ.

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

    Параметры:

    • вкладка «Разработчик Excel 2010» (см. вопрос Excel Добавить Поле для карты XML ) ( search )
    • Excel 2007 (возможно, другие). Похоже, что решение было разработано с использованием VBA на форуме. сообщение: Вопрос XML — схема обновления /Картография ( архив ) ( архив программно с использованием функции отображения XML страница, на которой размещаются ссылки ). Код VBA приведен ниже.
    • Excel 2003 Панель инструментов XML для Excel 2003
    • ALL: ниже представлен обходной путь, который не нарушает формулы.

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

    Официального решения для Excel 2007 не существует. Похоже, существует два отдельных официальных решения: одно для Excel 2003 (надстройка) и одно для Excel 2010 (вкладка «Разработчик»).

    Вопрос Excel Добавить поле в Xml Карта предлагает три метода, которые могут работать.

    • Первым был Набор инструментов XML для Excel 2003 который может сделать это в Excel 2003. Комментарий к этому решению указал, что у него есть некоторые проблемы /проблемы и могут или не могут быть функциональными для вас. Ты можешь приходится использовать более старую версию в Excel или даже более старую операционную система.
    • Второй метод — «отредактировать файл .xls».
    • Третий — использовать вкладку «Разработчик Excel 2010».
    • Обходной путь представлен ниже (возможно, я выбрал простые одноразовые обновления, которые не должны повторяться, а сопоставление простое).
    • Сохраните лист в виде электронной таблицы XML. Отредактируйте схему, записанную в конце файла. Учитывая, что это XML, он целиком в тексте. Схема проста для понимания. Добавить столбец так же просто, как просто скопировать и вставить (с изменениями) несколько строк XML-текста. При использовании этого метода, вероятно, проще всего сделать копию вашего рабочего листа, удалить и заново создать карту и карту, а затем вырезать и вставить. Пример XML:

    (SO-форматирование требует пустой текст)

    Обходной путь: [добавлены /вставлены /удалены столбцы (столбцы)] (легко для простых сопоставлений, например, одной большой таблицы):

    1. Сделайте резервную копию своего листа.
    2. Удалите карту XML . Не отображение на листе. Просто карта XML.
    3. Пересоздайте карту. Теперь у него будет новая XML-схема.
    4. Если у вас есть формула /данные, которые будут перезаписаны дополнительными столбцами: вставьте достаточно столбцов сразу справа от текущей области налист, который содержит сопоставленные данные XML.
    5. Если есть какие-либо столбцы, которые были вставлены между старыми столбцами, вставьте в лист столбец, куда они пойдут. Да, это верно в области сопоставленных данных XML, и общее имя столбца будет временно назначено.
    6. Удалите все столбцы, которые не существуют в новом XML.
    7. Перетащите элементы из новой сопоставленной таблицы в верхний левый угол текущего сопоставления (или иным образом воссоздайте сопоставление на листе непосредственно над сопоставлением, которое вы не удалили ) .
    8. Вручную измените все заголовки, которые были обновлены (если ваши данные были помечены как имеющие заголовки).
    9. Повторите шаги с 4 по 8 для всех отдельных сопоставлений, которые есть в вашей книге. Обычно у меня есть только одно большое сопоставление, на которое я ссылаюсь, а не несколько маленьких сопоставлений.
    10. Обновите данные XML.

    Ваши формулы не должны были изменяться, и ссылки на ячейки в отображенных данных XML должны оставаться правильными. Чтобы убедиться, что вы правильно вставили все столбцы на шаге 3, перед внесением любых других изменений (т. Е. На шаге 1a) вы можете создать строку над сопоставлением XML, скопировать и вставить только значения из верхней строки. Обновив данные XML на шаге 10, вы можете убедиться, что старые заголовки строк соответствуют новому месту размещения.

    Примечание. Шаги 3 и 4 можно поочередно выполнить, сделав более сложное отображение элементов XML. Мне проще вставлять столбцы и сохранять соответствие 1-1 с элементами XMl.

    Это работало на моей машине через несколько испытаний и оставило формулы, ссылающиеся на область, как правильные. Файл, в котором вы можете экспериментировать, называется SO-XML mapping.xml и включен в приведенный ниже пример файла ( и здесь). )

    Учет общих изменений столбцов в некоторых таблицах данных, полученных из источника (или с использованием нескольких источников взаимозаменяемо):

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

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

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

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

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

    VBA-код от KMKfan 16 ноября 2009 г .:

    Комментарий в посте был:

    Вот обновление для этого кода. Этот код допускает несколько XML карты для обновления в той же книге, что и карты xsd и xml имеют одно и то же имя (то есть: исходная карта «MyMap» основана на MyMap.xsd. Должно быть очень полезно, если вы используете XML для отчетности и решите добавить часть данных для захвата. Вы можете обновить существующий сопоставление автоматически и нужно только вручную обновить новые данные элементы.

    Выделите импортированные данные и удалите заполненные строки. Затем выберите ячейку, в которую хотите вставить данные, и заново создайте соединение, перейдя в «Данные» -> Из импорта данных XML. Когда он воссоздает соединение, он должен добавить ваш дополнительный столбец. (Если вы попытаетесь обновить таблицу данных, которая в данный момент существует, она не добавит ваш столбец.)

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

    В последние несколько лет язык XML (Extensible Markup Language, букв, «расширяемый язык разметки») стал распространенным форматом обмена информацией, и нет ничего необычного в том, что люди и организации отправляют друг другу файлы XML. Простые структуры, лежащие в основе XML, делают обмен информацией чрезвычайно простым, причем неважно, используют ли все стороны одно и то же программное обеспечение и браузеры. Однако до недавних пор, хотя общие утилиты XML стали широко распространены, заполнить пробел между документами XML и пользовательским интерфейсом было еще достаточно трудно. Microsoft Excel упрощает эту задачу, по крайней мере, для данных в сетке таблицы.

    В этом трюке используются возможности Excel, доступные только в Excel для Windows старше 2003 года. Более ранние версии Excel не поддерживают их; эти возможности не поддерживаются и в существующих, и планируемых версиях Excel для Macintosh.

    Начнем с простого документа XML, приведенного в листинге 8.1.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    
    // Листинг 8.1. Простой документ XML для анализа в Excel
    < ?xml version-"1.0" encoding-"UTF-8"?>
    <sales>
     
    <sale>
    <date>2003-10-05</date>
    <isbn>0596005385</isbn>
    <title>Off1ce 2003 XML Essentia1s</title>
    <priceus>34.95
    <quantity>200</quantity>
    <customer IO="1025">Zork's Books</customer>
    </priceus></sale>
     
    <sale>
    <date>2003-10-05</date>
    <isbn>0596002920</isbn>
    <title>XML in a Nutshell. 2nd Edition
    <priceus>39.95</priceus>
    <quantity>90</quantity>
    <customer ID="1025">Zork's Books</customer>
    </title></sale>
     
    <sale>
    <date>2003-10-05</date>
    <isbn>0596002378</isbn>
    <title>SAX2</title>
    <priceus>29.95</priceus>
    <quantity>300</quantity>
    <customer ID="1025">Zork's Books</customer>
    </sale>
     
    <sale>
    <date>2003-10-05</date>
    <isbn>0596005385</isbn>
    <title>Office 2003 XML Essentials</title>
    <priceus>34.95</priceus>
    <quantity>10</quantity>
    <customer ID="1029">Books of Glory</customer>
    </sale>
     
    <sale>
    <date>2003-10-05</date>
    <isbn>0596002920</isbn>
    <title>XML in a Nutshell, 2nd Edition</title>
    <priceus>39.95</priceus>
    <quantity>25</quantity>
    <customer ID="1029">Books of Glory</customer>
    </sale>
     
    <sale>
    <date>2003-10-07</date>
    <isbn>0596002378</isbn>
    <title>SAX2</title>
    <priceus>29.95</priceus>
    <quanti ty>5
    <customer ID="1029">Books of Glory</customer>
    </quanti></sale>
     
    <sale>
    <date>2003-10-18</date>
    <isbn>0596002378</isbn>
    <title>SAX2</title>
    <priceus>29.95</priceus>
    <quantity>15</quantity>
    <customer ID="2561">Title Wave</customer>
    </sale>
     
    <sale>
    <date>2003-10-21</date>
    <isbn>0596002920</isbn>
    <title>XML in a Nutshell. 2nd Edition</title>
    <priceus>39.95</priceus>
    <quantity>15</quantity>
    <customer ID="9021">Books for You</customer>
    </sale>
     
    </sales>

    Этот документ можно открыть непосредственно в Excel командой Файл → Открыть (File → Open). Откроется диалоговое окно (рис. 8.1).

    Рис. 8.1. Открытие файла XML в Excel

    Рис. 8.1. Открытие файла XML в Excel

    Если вы выберете переключатель XML-список (As an XML list), то увидите предупреждение, что Excel создаст собственную схему для этого документа, не имеющего схемы (рис. 8.2).

    Рис. 8.2. Предупреждение Excel об отсутствии ссылок на схему

    Рис. 8.2. Предупреждение Excel об отсутствии ссылок на схему

    Щелкнув кнопку ОК, вы увидите, какой способ Excel выбрал для представления информации в открываемом документе в виде электронной таблицы (рис. 8.3). Обратите внимание, что Excel ожидает встретить формат даты, который используется для элемента даты, поэтому даты, импортированные как 2003-10-05, будут отображаться как 10/5/2003.

    Рис. 8.3. Данные XML, представленные как XML-список в Excel

    Рис. 8.3. Данные XML, представленные как XML-список в Excel

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

    Раскрывающиеся списки в заголовках столбцов позволяют выбирать способ сортировки данных (по умолчанию данные выводятся в том порядке, в котором они записаны в исходном документе). Можно также включить отображение строки итогов Итог (Total); для этого можно воспользоваться панелью инструментов Список (List) или щелкнуть правой кнопкой мыши в любом месте списка и в контекстном меню выбрать команду Список → Строка итогов (List → Total Row). Когда строка итогов появится, выбрать вид итоговой информации можно будет в раскрывающемся меню (рис. 8.4).

    Рис. 8.4. Выбор итогов для списка XML в Excel

    Данные можно обновить, добавив при этом в обновляемую область информацию из документа XML с такой же структурой. Если у вас есть еще один документ с такой структурой, можете щелкнуть список правой кнопкой мыши, в контекстном меню выбрать команду XML → Импорт (XML → Import) и выбрать второй документ. Кроме того, после редактирования данные можно экспортировать обратно в файл XML, щелкнув список правой кнопкой мыши и выбрав в контекстном меню команду XML → Экспорт (XML → Export). Это превращает Excel в очень удобный инструмент редактирования простых XML-документов с табличной структурой.

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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    
    // Листинг 8.2. Схема для данных о продаже книг
    < ?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    elementFormDefault="qualified">
     <xs:element name="sales">
      <xs:complextype>
       <xs:sequence>
    	<xs:element maxOccurs="unbounded" ref="sale"></xs:element>
      </xs:sequence>
     </xs:complextype>
    </xs:element>
    <xs:element name="sale">
     <xs:complextype>
      <xs:sequence>
    	<xs:element ref="date"></xs:element>
    	<xs:element ref="ISBN"></xs:element>
    	<xs:element ref="T1tle"></xs:element>
    	<xs:element ref="PriceUS"></xs:element>
    	<xs:element ref="quantity"></xs:element>
    	<xs:element ref="customer"></xs:element>
      </xs:sequence>
     </xs:complextype>
    </xs:element>
    <xs:element name="date" type="xs:date"></xs:element>
    <xs:element name="ISBN" type="xs:string"></xs:element>
    <xs:element name="Title" type="xs:string"></xs:element>
    <xs:e1ement name="PriceUS" type="xs:decimal"></xs:e1ement>
    <xs:element name="quant1ty" type="xs:integer"></xs:element>
    <xs:element name="customer">
     <xs:complextype mixed="true">
      <xs:attribute name="ID" use="required" type="xs:integer"></xs:attribute>
     </xs:complextype>
    </xs:element>
    </xs:schema>

    Обратите внимание, что элемент date определен как дата, а элемент ISBN определен как строка, а не как целое число. Если вы начнете с открытия этой схемы, а не документа, то заставите Excel загружать документ, сохранив ведущий нуль в ISBN.

    На этот раз вы создадите список до загрузки документа XML, начав с пустого рабочего листа. Вам понадобится открыть область задач Источник XML (XML Source). Если она еще не открыта, нажмите сочетание клавиш Ctrl+Fl. Затем в раскрывающемся списке вверху области задач выберите Источник XML (XML Source) и вы увидите что-то похожее на рис. 8.6.

    Рис. 8.6. Область задач Источник XML

    Рис. 8.6. Область задач Источник XML

    Чтобы загрузить схему, щелкните кнопку Карты XML (XML Maps). Откроется диалоговое окно Карты XML (XML Maps) (рис. 8.7).

    Рис. 8.7. Диалоговое окно Карты XML

    Рис. 8.7. Диалоговое окно Карты XML

    Щелкните кнопку Добавить (Add), чтобы открыть схему, и выберите схему (рис. 8.8). Если схема не ограничивает документы одним начальным элементом, появится диалоговое окно с просьбой выбрать корневой элемент. Так как документы в этом примере начинаются с элемента sales, выберите «sales».

    Рис. 8.8. Выбор XML-схемы

    Рис. 8.8. Выбор XML-схемы

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

    В диалоговом окне Карты XML (XML Maps) Excel сообщит, что схема была добавлена к электронной таблице. Если вы щелкнете кнопку ОК, то вернетесь в главное окно Excel и в области задач Источник XML (XML Source) появится диаграмма, отображающая структуру схемы. Теперь, когда у вас есть структура, можно создать список. Самый простой способ сделать это, особенно с небольшими документами, как наш, — перетащить значок sales на ячейку А1.

    Теперь, обустроив дом для данных, нужно заселить его. Можно щелкнуть кнопку Импорт XML-данных (Import XML Data) на панели инструментов Список (List) или щелкнуть правой кнопкой мыши список и в контекстном меню выбрать кнопку XML → Импорт (XML → Import). Если вы выберете файл, который уже открывали ранее (в листинге 8.1), то увидите результат, как на рис. 8.3. Обратите внимание на добавление ведущих нулей к значениям, которые теперь являются текстовыми, как и должно быть.

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

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

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

    Понравилась статья? Поделить с друзьями:
  • Теги vba для excel
  • Текст в excel все заглавные буквы
  • Тег текста в word
  • Текст в excel виден только при печати
  • Тег title в excel