Схемы и данные XML (Инструменты Visual Studio для Office)
Обновлен: Ноябрь 2007
Применение |
---|
Сведения, приведенные в данном разделе, относятся только к указанным проектам Visual Studio Tools for Office и версиям приложений Microsoft Office. Тип проекта
Версия Microsoft Office
Дополнительные сведения см. в разделе Доступность функций по типам приложений и проектов. |
Microsoft Office Excel и Microsoft Office Word предоставляют возможность сопоставлять схемы с документами. Это позволяет упростить импорт и экспорт XML-данных из документов.
![]() |
---|
Нельзя использовать составные 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 в окне Свойства.
Примечание.
BindingSource не создается для объектов ListObject. Необходимо вручную привязать ListObject к источнику данных, установив свойства DataSource и DataMember в окне Свойства.
Сопоставляемые схемы Office и окно Visual Studio "Источники данных"
Функциональность сопоставляемых схем и окно Visual Studio Источники данных могут помочь представить данные на листе Excel для создания отчетов или редактирования. В обоих случаях можно перетащить элементы данных на лист Excel. Оба метода создают элементы управления, которые через BindingSource привязаны к источнику данных, например, DataSet или веб-службе.
![]() |
---|
Когда повторяющийся элемент схемы сопоставляется с листом, 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