XML-Schemas und Daten (Visual Studio Tools for Office)
Aktualisiert: November 2007
Betrifft |
---|
Die Informationen in diesem Thema gelten nur für die angegebenen Projekte und Versionen von Visual Studio Tools for Office von Microsoft Office. Projekttyp
Microsoft Office-Version
Weitere Informationen hierzu finden Sie unter Verfügbare Features nach Anwendung und Projekttyp. |
Microsoft Office Excel und Microsoft Office Word ermöglichen es Ihnen, Dokumenten Schemas zuzuordnen. Dieses Feature kann das Importieren und Exportieren von XML-Daten in das Dokument bzw. aus dem Dokument erleichtern.
Hinweis: |
---|
In Excel-Projektmappen können keine mehrteiligen XML-Schemas verwendet werden. |
Visual Studio Tools for Office macht zugeordnete Schemaelemente als Steuerelemente im Programmiermodell in Anpassungen auf Dokumentebene verfügbar. Excel wird durch Visual Studio Tools for Office um Unterstützung für das Binden von Steuerelementen an Daten in Datenbanken, Webdiensten und Objekten erweitert. Word und Excel erhalten durch Visual Studio Tools for Office Unterstützung für Aktionsbereiche. Die Verwendung von Aktionsbereichen kann Ihren Projektmappen in Verbindung mit einem Dokument, das einem Schema zugeordnet wurde, mehr Benutzerfreundlichkeit verleihen. Weitere Informationen hierzu finden Sie unter Aktionsbereichsübersicht.
Objekte, die beim Anfügen von Schemas an Excel-Arbeitsmappen erstellt werden
Wenn Sie einer Arbeitsmappe ein Schema zuordnen, werden von Visual Studio automatisch einige Objekte erstellt und dem Projekt hinzugefügt. Diese Objekte dürfen nicht mit Visual Studio-Tools gelöscht werden, da sie von Excel verwaltet werden. Entfernen Sie die zugeordneten Elemente aus dem Arbeitsblatt, oder trennen Sie das Schema mit Excel-Tools ab, um die Objekte zu löschen.
Es gibt zwei Hauptobjekte:
XML-Schema (XSD-Datei). Für jedes Schema in der Arbeitsmappe fügt Visual Studio dem Projekt ein Schema hinzu. Dieses wird im Projektmappen-Explorer als Projektelement mit einer XSD-Erweiterung angezeigt.
Eine typisierte DataSet-Klasse. Diese Klasse wird auf Grundlage des Schemas erstellt. Diese Dataset-Klasse ist in der Klassenansicht sichtbar.
Objekte, die bei der Zuordnung von Schemaelementen zu Excel-Arbeitsblättern erstellt werden
Wenn Sie einem Arbeitsblatt ein Schemaelement aus dem Aufgabenbereich XML-Quelle zuordnen, werden von Visual Studio automatisch mehrere Objekte erstellt und dem Projekt hinzugefügt:
Steuerelemente. Für jedes zugeordnete Objekt in der Arbeitsmappe wird im Programmiermodell ein XmlMappedRange-Steuerelement (für sich nicht wiederholende Schemaelemente) oder ein ListObject-Steuerelement (für sich wiederholende Schemaelemente) erstellt. Das ListObject-Steuerelement kann nur gelöscht werden, indem die Zuordnungen und die zugeordneten Objekte aus der Arbeitsmappe gelöscht werden. Weitere Informationen über Steuerelemente finden Sie unter Übersicht über Hostelemente und Hoststeuerelemente.
BindingSource. Wenn Sie einen XmlMappedRange durch Zuordnen eines sich nicht wiederholenden Schemaelements zum Arbeitsblatt erstellen, wird eine BindingSource erzeugt und das XmlMappedRange-Steuerelement an die BindingSource gebunden. Sie müssen die BindingSource an eine Instanz der Datenquelle binden, die mit dem Schema übereinstimmt, das dem Dokument zugeordnet wurde – also z. B. mit einer Instanz der typisierten DataSet-Klasse, die erstellt wurde. Erstellen Sie die Bindung, indem Sie im Eigenschaftenfenster die Eigenschaften DataSource und DataMember festlegen.
Hinweis: BindingSource wird nicht für ListObject-Objekte erstellt. Sie müssen das ListObject durch Festlegen der Eigenschaften DataSource und DataMember im Eigenschaftenfenster manuell an die Datenquelle binden.
Zugeordnete Schemas von Office und das Datenquellenfenster von Visual Studio
Sowohl mithilfe der zugeordneten Schemas von Office als auch über das Datenquellenfenster von Visual Studio können Sie Daten in einem Excel-Arbeitsblatt zur Berichterstellung oder zur Bearbeitung präsentieren. In beiden Fällen können Sie Datenelemente in das Excel-Arbeitsblatt ziehen Bei beiden Methoden werden Steuerelemente erstellt, die über eine BindingSource an eine Datenquelle (z. B. DataSet) oder einen Webdienst an Daten gebunden sind.
Hinweis: |
---|
Wenn Sie einem Arbeitsblatt ein sich wiederholendes Schemaelement zuordnen, wird von Visual Studio Tools for Office ein ListObject erstellt. Das ListObject wird durch die BindingSource nicht automatisch an Daten gebunden. Sie müssen das ListObject durch Festlegen der Eigenschaften DataSource und DataMember im Eigenschaftenfenster manuell an die Datenquelle binden. |
In der folgenden Tabelle werden einige der Unterschiede zwischen den beiden Methoden gezeigt.
XML-Schema |
Datenquellenfenster |
---|---|
Verwendet die Office-Schnittstelle. |
Verwendet das Datenquellenfenster in Visual Studio. |
Aktiviert die integrierten Office-Features für das Importieren und Exportieren von Daten in XML-Dateien. |
Sie müssen die Import- und Exportfunktionalität programmgesteuert bereitstellen. |
Sie müssen Code schreiben, um die generierten Steuerelemente mit Daten zu füllen. |
Für Steuerelemente, die Sie über das Datenquellenfenster hinzufügen, wird automatisch Code zum Füllen mit Daten generiert – einschließlich der benötigten Verbindungszeichenfolgen, wenn Sie Datenbankserver verwenden. |
Verhalten, wenn Schemas an Word-Dokumente angefügt werden
Beim Anfügen eines Schemas an ein Word-Dokument, das in einem Visual Studio Tools for Office-Projekt auf Dokumentebene verwendet wird, werden keine Datenobjekte erstellt. Es werden jedoch Steuerelemente erstellt, wenn Sie dem Dokument ein Schemaelement zuordnen. Welche Art von Steuerelement erstellt wird, hängt von der Art des zugeordneten Elements ab. Bei wiederholenden Elementen werden XMLNodes-Steuerelemente generiert, während bei nicht wiederholenden Elementen XMLNode-Steuerelemente generiert werden. Weitere Informationen finden Sie unter XMLNodes-Steuerelement und unter XMLNode-Steuerelement.
Bereitstellung von Projektmappen mit XML-Schemas
Sie sollten einen Installer erstellen, um eine Projektmappe bereitzustellen, die ein XML-Schema verwendet, das einem Dokument zugeordnet ist. Der Installer sollte das Schema in der Schemabibliothek auf dem Computer des Benutzers registrieren. Die Projektmappe funktioniert auch, wenn das Schema nicht registriert wird. In diesem Fall generiert Word nämlich beim Öffnen des Dokuments durch den Benutzer ein temporäres Schema, das auf den im Dokument enthaltenen Elementen basiert. Das Schema, mit dem das Projekt erstellt wurde, kann jedoch vom Benutzer nicht gespeichert oder zum Validieren verwendet werden. Weitere Informationen über Installer finden Sie unter Bereitstellen von Anwendungen und Komponenten.
Sie können einem Projekt auch Code hinzufügen, durch den überprüft wird, ob sich das Schema in der Bibliothek befindet und registriert ist. Wenn dies nicht der Fall ist, können Sie den Benutzer warnen.
' 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;
}
Siehe auch
Aufgaben
Gewusst wie: Zuordnen von Schemas zu Word-Dokumenten in Visual Studio
Gewusst wie: Zuordnen von Schemas zu Arbeitsblättern in Visual Studio