Share via


Schemi e dati XML (Visual Studio Tools per Office)

Aggiornamento: novembre 2007

Si applica a

Le informazioni contenute in questo argomento riguardano solo i progetti Visual Studio Tools per Office e le versioni di Microsoft Office specificati.

Tipo di progetto

  • Progetti a livello di documento

Versione Microsoft Office

  • Microsoft Office System 2007

  • Microsoft Office 2003

Per ulteriori informazioni, vedere la classe Funzionalità disponibili in base ai tipi di progetto e applicazione.

Microsoft Office Excel e Microsoft Office Word forniscono le funzionalità per mappare gli schemi ai documenti. Queste funzionalità consentono di semplificare l'importazione e l'esportazione di dati XML da e nel documento.

Nota:

Nelle soluzioni Excel non è possibile utilizzare schemi XML multipart.

Nel modello di programmazione, Visual Studio Tools per Office espone come controlli gli elementi di schema mappati nelle personalizzazioni a livello di documento. Nel caso di Excel, Visual Studio Tools per Office aggiunge il supporto per l'associazione dei controlli ai dati dei database, dei servizi Web e degli oggetti. Nel caso di Word ed Excel, Visual Studio Tools per Office aggiunge il supporto per i riquadri delle azioni, i quali possono essere utilizzati con documenti dotati di mapping a schemi per migliorare le attività degli utenti con le soluzioni. Per ulteriori informazioni, vedere la classe Cenni preliminari sul riquadro delle azioni.

Oggetti creati quando gli schemi sono collegati alle cartelle di lavoro di Excel

Quando si allega un schema a una cartella di lavoro, Visual Studio crea automaticamente diversi oggetti e li aggiunge al progetto. Questi oggetti non devono essere eliminati con gli strumenti di Visual Studio, perché sono gestiti da Excel. Per eliminarli, rimuovere gli elementi mappati dal foglio di lavoro o scollegare lo schema con gli strumenti di Excel.

Esistono due oggetti principali:

  • Schema XML (file XSD). Per ogni schema della cartella di lavoro, al progetto viene aggiunto uno schema che in Esplora soluzioni appare come elemento di progetto con estensione XSD.

  • Classe DataSet tipizzata. Questa classe viene creata in base allo schema. Questa classe Dataset è visibile in Visualizzazione classi.

Oggetti creati quando gli elementi dello schema vengono mappati ai fogli di lavoro di Excel

Quando si mappa un elemento dello schema dal riquadro attività Origine XML a un foglio di lavoro, numerosi oggetti vengono automaticamente creati e aggiunti al progetto da Visual Studio.

  • Controlli. Per ogni oggetto mappato nella cartella di lavoro, viene creato nel modello di programmazione un controllo XmlMappedRange (per gli elementi dello schema non ripetuti) o un controllo ListObject (per gli elementi dello schema ripetuti). Il controllo ListObject può essere eliminato solo eliminando dalla cartella di lavoro i mapping e gli oggetti mappati. Per ulteriori informazioni sui controlli, vedere Cenni preliminari sugli elementi e sui controlli host.

  • Classe BindingSource. Quando si crea un controllo XmlMappedRange eseguendo il mapping di un elemento di schema non ripetitivo al foglio di lavoro, viene creata una classe BindingSource e il controllo XmlMappedRange viene associato alla classe BindingSource. È necessario associare la classe BindingSource a un'istanza dell'origine dati corrispondente allo schema mappato al documento, ad esempio un'istanza della classe DataSet tipizzata precedentemente creata. Creare l'associazione impostando le proprietà DataSource e DataMember, disponibili nella finestra Proprietà.

    Nota:

    La classe BindingSource non viene creata per i controlli ListObject. È necessario associare manualmente all'origine dati il controllo ListObject mediante l'impostazione delle proprietà DataSource e DataMember nella finestra Proprietà.

Schemi mappati di Office e finestra Origini dati di Visual Studio

Sia la funzionalità degli schemi mappati di Office che la finestra Origini dati di Visual Studio possono rivelarsi utili per la presentazione di dati in un foglio di lavoro di Excel allo scopo di eseguirne il report o la modifica. In entrambi i casi, è possibile trascinare gli elementi di dati sul foglio di lavoro di Excel. I due metodi consentono di creare controlli che vengono associati a dati mediante una classe BindingSource a un'origine dati, come una classe DataSet o un servizio Web.

Nota:

Quando si esegue il mapping di un elemento di schema ripetitivo a un foglio di lavoro, Visual Studio Tools per Office crea un controllo ListObject. Tuttavia, tale controllo ListObject non viene associato automaticamente ai dati attraverso la classe BindingSource. È necessario associare manualmente all'origine dati il controllo ListObject mediante l'impostazione delle proprietà DataSource e DataMember nella finestra Proprietà.

Nella tabella riportata di seguito vengono evidenziate alcune delle differenze tra i due metodi.

Schema XML

Finestra Origini dati

Utilizza l'interfaccia di Office.

Utilizza la finestra Origini dati di Visual Studio.

Consente le funzionalità incorporate di Office per l'importazione e l'esportazione di dati da file XML.

È necessario fornire le funzionalità di importazione ed esportazione a livello di codice.

È necessario creare codice per riempire di dati i controlli generati.

I controlli aggiunti dalla finestra Origini dati vengono riempiti da codice generato automaticamente e dispongono delle stringhe di connessione necessarie quando si utilizzano i server database.

Comportamento con gli schemi collegati ai documenti di Word

Gli oggetti dati non vengono creati quando si collega uno schema a un documento di Word utilizzato in un progetto Visual Studio Tools per Office a livello di documento. Vengono tuttavia creati dei controlli quando si mappa un elemento di schema al documento. Il tipo di controllo dipende dal tipo di elemento mappato. Gli elementi ripetitivi generano controlli XMLNodes, mentre gli elementi non ripetitivi generano controlli XMLNode. Per ulteriori informazioni, vedere°Controllo XMLNodes e Controllo XMLNode.

Distribuzione di soluzioni che includono schemi XML

Per distribuire una soluzione che si avvale di uno schema XML mappato a un documento è necessario creare un programma di installazione. Il compito del programma di installazione sarà quello di registrare lo schema nella libreria degli schemi del computer dell'utente. Se non si registra lo schema, la soluzione potrà essere comunque utilizzata perché Word genera uno schema temporaneo basato sugli elementi presenti nel documento al momento dell'apertura. L'utente tuttavia non sarà in grado di eseguire la convalida o salvare lo schema utilizzato per creare il progetto. Per ulteriori informazioni sui programmi di installazione, vedere Distribuzione di applicazioni e componenti.

È inoltre possibile aggiungere codice al progetto per verificare se lo schema è presente nella libreria ed è stato registrato. In caso contrario, infatti, è possibile avvisare l'utente.

' 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;
}

Vedere anche

Attività

Procedura: mappare schemi a documenti di Word in Visual Studio

Procedura: mappare schemi a fogli di lavoro in Visual Studio