共用方式為


XML 結構描述和資料 (Visual Studio Tools for Office)

更新:2007 年 11 月

適用於

本主題中的資訊僅適用於指定的 Visual Studio Tools for Office 專案和 Microsoft Office 版本。

專案類型

  • 文件層級專案

Microsoft Office 版本

  • 2007 Microsoft Office system

  • Microsoft Office 2003

如需詳細資訊,請參閱依應用程式和專案類型提供的功能

Microsoft Office Excel 和 Microsoft Office Word 提供將結構描述對應至文件的能力。這項功能可以簡化將 XML 資料匯入文件,以及從文件匯出 XML 資料。

注意事項:

您不能在 Excel 方案中使用多重 XML 結構描述。

Visual Studio Tools for Office 會公開 (Expose) 文件層級自訂中對應的結構描述項目,做為程式撰寫模型 (Programming Model) 中的控制項。如果使用的是 Excel,Visual Studio Tools for Office 會在資料庫、Web 服務和物件中加入將控制項繫結至資料的支援。如果是 Word 和 Excel,Visual Studio Tools for Office 會加入執行窗格的支援,其可與結構描述對應文件搭配使用,以為方案建立加強的使用者經驗。如需詳細資訊,請參閱執行窗格概觀

結構描述附加至 Excel 活頁簿時所建立的物件

當您將結構描述附加至活頁簿時,Visual Studio 會自動建立多個物件並將這些物件加入至專案。不應使用 Visual Studio 工具刪除這些物件,因為它們是由 Excel 進行管理。若要刪除它們,請移除工作表中的對應項目,或使用 Excel 工具中斷與結構描述的連結。

主要物件有兩個:

  • XML 結構描述 (XSD 檔)。對於活頁簿中的每個結構描述,Visual Studio 都會將結構描述加入專案。它會在 [方案總管] 中顯示為具有 XSD 擴充的專案項目。

  • 具型別的 DataSet 類別。這個類別是根據結構描述建立的。在 [類別檢視] 中可以看見這個資料集類別。

當結構描述項目對應至 Excel 工作表時所建立的物件

當您從 [XML 原始檔] 工作窗格將結構描述項目對應至工作表時,Visual Studio 就會自動建立多個物件並將這些物件加入至專案:

Office 對應結構描述和 Visual Studio 資料來源視窗

Office 的對應結構描述功能和 Visual Studio [資料來源] 視窗,都可以幫助您在 Excel 工作表上顯示資料,以進行報告或編輯。在這兩種情況下,您都可以將資料項目拖曳至 Excel 工作表。這兩種方法都會建立控制項,這些控制項是透過 BindingSource 繫結至資料來源 (例如 DataSet 或 Web 服務) 的資料。

注意事項:

當您將重複的結構描述項目對應至工作表時,Visual Studio Tools for Office 就會建立 ListObject。不過,ListObject 並不會透過 BindingSource 自動繫結至資料。您必須設定 [屬性] 視窗中的 DataSourceDataMember 屬性,以手動方式將 ListObject 繫結至資料來源。

下表顯示這兩種方法之間的一些差異。

XML 結構描述

資料來源視窗

使用 Office 介面。

使用 Visual Studio 中的 [資料來源] 視窗。

啟用內建 Office 功能,以從 XML 檔匯入和匯出資料。

您必須以程式設計的方式提供匯入和匯出功能。

您必須撰寫程式碼,才能用資料填滿產生的控制項。

從 [資料來源] 視窗加入的控制項會自動產生程式碼,以對其進行填滿,同時還包括您使用資料庫伺服器時的必要連接字串。

結構描述附加至 Word 文件的行為

將結構描述附加至文件層級 Visual Studio Tools for Office 專案中使用的 Word 文件時,不會建立資料物件。不過,將結構描述項目對應至文件時,會建立控制項。控制項的型別取決於您所對應的項目型別,重複項目會產生 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;
}

請參閱

工作

HOW TO:在 Visual Studio 內將結構描述對應至 Word 文件

HOW TO:在 Visual Studio 內將結構描述對應至工作表