Поделиться через


Схемы и данные XML (Инструменты Visual Studio для Office)

Обновлен: Ноябрь 2007

Применение

Сведения, приведенные в данном разделе, относятся только к указанным проектам Visual Studio Tools for Office и версиям приложений Microsoft Office.

Тип проекта

  • Проекты уровня документа

Версия Microsoft Office

  • Выпуск 2007 системы Microsoft Office

  • Microsoft Office 2003

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

Microsoft Office Excel и Microsoft Office Word предоставляют возможность сопоставлять схемы с документами. Это позволяет упростить импорт и экспорт XML-данных из документов.

y36t3e16.alert_note(ru-ru,VS.90).gifПримечание.

Нельзя использовать составные XML-схемы в решениях Excel.

В настройках на уровне документа сопоставляемые элементы схемы Visual Studio Tools for Office представляет в программной модели как элементы управления. Для Excel Visual Studio Tools for Office добавляет возможность привязки элементов управления к данным в веб-службах, базах данных и объектах. Для Word и Excel среда Visual Studio Tools for Office добавляет поддержку панелей действий, которые можно использовать с документами на базе схем с целью повышения эффективности взаимодействия пользователей с решениями. Дополнительные сведения см. в разделе Общие сведения о панели действий.

Создаваемые объекты при присоединении схем к книгам Excel

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

Есть два основных объекта:

  • Схема XML (XSD-файл). Для каждой схемы в книге Visual Studio добавляет в проект одну схему. В Обозревателе решений схема представляется как элемент проекта с расширением XSD.

  • Типизированный класс DataSet. Этот класс набора данных создается на основе схемы. и отображается в Представлении классов.

Создаваемые объекты при сопоставлении элементов схем с листами Excel

Когда элемент схемы из области задач Источник XML сопоставляется с листом, Visual Studio автоматические создает несколько объектов и добавляет их в проект:

  • Элементы управления. В программной модели для каждого сопоставляемого объекта в книге создается элемент управления XmlMappedRange (для неповторяющихся элементов схем) или элемент управления ListObject (для повторяющихся элементов схем). Удалить элемент управления ListObject можно только путем удаления из книги сопоставлений и сопоставляемых объектов. Дополнительные сведения об элементах управления см. в разделе Общие сведения о ведущих элементах и элементах управления ведущего приложения.

  • BindingSource. Когда создается элемент управления XmlMappedRange путем сопоставления с листом неповторяющегося элемента схемы, создается BindingSource, и элемент управления XmlMappedRange привязывается к BindingSource. Необходимо выполнить привязку BindingSource к экземпляру источника данных, который соответствует схеме, сопоставляемой документу, например, к созданному экземпляру типизированного класса DataSet. Создайте привязку, установив свойства DataSource и DataMember в окне Свойства.

    y36t3e16.alert_note(ru-ru,VS.90).gifПримечание.

    BindingSource не создается для объектов ListObject. Необходимо вручную привязать ListObject к источнику данных, установив свойства DataSource и DataMember в окне Свойства.

Сопоставляемые схемы Office и окно Visual Studio "Источники данных"

Функциональность сопоставляемых схем и окно Visual Studio Источники данных могут помочь представить данные на листе Excel для создания отчетов или редактирования. В обоих случаях можно перетащить элементы данных на лист Excel. Оба метода создают элементы управления, которые через BindingSource привязаны к источнику данных, например, DataSet или веб-службе.

y36t3e16.alert_note(ru-ru,VS.90).gifПримечание.

Когда повторяющийся элемент схемы сопоставляется с листом, Visual Studio Tools for Office создает ListObject. ListObject автоматически не привязывается к данным через BindingSource. Необходимо вручную привязать ListObject к источнику данных, установив свойства DataSource и DataMember в окне Свойства.

В приведенной ниже таблице показаны некоторые различия между двумя методами.

Схема XML

Окно "Источники данных"

Использует интерфейс Office.

Использует окно Источники данных в Visual Studio.

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

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

Необходимо писать код для заполнения данными сгенерированных элементов управления.

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

Присоединение схем к документам Word

Когда к документу Word, который используется в проектах Visual Studio Tools for Office на уровне документа, присоединяется схема, объекты данных не создаются. Но когда элемент схемы сопоставляется с документом, элементы управления создаются. Тип элемента управления зависит от типа сопоставляемого элемента. Повторяющиеся элементы генерируют элементы управления XMLNodes, а неповторяющиеся элементы — XMLNode. Дополнительные сведения см. в разделах Элемент управления XMLNodes и Элемент управления XMLNode.

Развертывание решений, содержащих XML-схемы

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

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

' Ensure that the schema is in the library and registered with the document.
Private Function CheckSchema() As Boolean

    Const namespaceUri As String = "http://schemas.contoso.com/projects"
    Dim namespaceFound As Boolean = False
    Dim namespaceRegistered As Boolean = False

    Dim n As Word.XMLNamespace
    For Each n In Application.XMLNamespaces
        If (n.URI = namespaceUri) Then
            namespaceFound = True
        End If
    Next

    If Not namespaceFound Then
        MessageBox.Show("XML Schema is not in library.")
        Return False
    End If

    Dim r As Word.XMLSchemaReference
    For Each r In Me.XMLSchemaReferences
        If (r.NamespaceURI = namespaceUri) Then
            namespaceRegistered = True
        End If
    Next

    If Not namespaceRegistered Then
        MessageBox.Show("XML Schema is not registered for this document.")
        Return False
    End If

    Return True
End Function
// Ensure that the schema is in the library and registered with the document.
private bool CheckSchema()
{
    const string namespaceUri = "http://schemas.contoso.com/projects";
    bool namespaceFound = false;
    bool namespaceRegistered = false;

    foreach (Word.XMLNamespace n in Application.XMLNamespaces)
    {
        if (n.URI == namespaceUri)
        {
            namespaceFound = true;
        }
    }

    if (!namespaceFound)
    {
        MessageBox.Show("XML Schema is not in library.");
        return false;
    }

    foreach (Word.XMLSchemaReference r in this.XMLSchemaReferences) 
    {
        if (r.NamespaceURI == namespaceUri)
        {
            namespaceRegistered = true;
        }
    }

    if (!namespaceRegistered)
    {
        MessageBox.Show("XML Schema is not registered for this document.");
        return false;
    }

    return true;
}

См. также

Задачи

Практическое руководство. Сопоставление схем и документов Word в Visual Studio

Практическое руководство. Сопоставление схем и листов внутри Visual Studio