Compartilhar via


Esquemas XML e dados em personalizações no nível do documento

Importante As informações descritas neste tópico sobre o Microsoft Word são apresentadas exclusivamente para o benefício e o uso de indivíduos e organizações que estão localizados fora dos Estados Unidos e seus territórios ou que estão usando ou desenvolvendo programas em execução, produtos do Microsoft Word que foram licenciados pela Microsoft antes de janeiro de 2010, quando a Microsoft removeu uma implementação de funcionalidade específica relacionada ao XML personalizado do Microsoft Word. Essas informações sobre o Microsoft Word podem não ser lidas ou usadas por indivíduos ou organizações nos Estados Unidos ou seus territórios que estão usando ou desenvolvendo programas em execução, produtos do Microsoft Word que foram licenciados pela Microsoft após 10 de janeiro de 2010; esses produtos não se comportarão da mesma forma que os produtos licenciados antes dessa data ou comprados e licenciados para uso fora dos Estados Unidos.

Aplica-se a: As informações neste tópico se aplicam a projetos de nível de documento para Excel e Word. Para obter mais informações, consulte Os recursos disponíveis pelo aplicativo do Office e pelo tipo de projeto.

O Microsoft Office Excel e o Microsoft Office Word fornecem a capacidade de mapear esquemas para seus documentos. Esse recurso pode simplificar a importação e a exportação de dados XML dentro e fora do documento.

O Visual Studio expõe elementos de esquema mapeados em personalizações no nível do documento como controles no modelo de programação. Para o Excel, o Visual Studio adiciona suporte para associar os controles a dados em bancos de dados, serviços Web e objetos. Para Word e Excel, o Visual Studio adiciona suporte para painéis de ações, que podem ser usados com um documento mapeado por esquema para criar uma experiência aprimorada do usuário final para suas soluções. Para obter mais informações, consulte a visão geral do painel Ações.

Observação

Não é possível usar esquemas XML de várias partes em soluções do Excel.

Objetos criados quando esquemas são anexados a pastas de trabalho do Excel

Quando você anexa um esquema a uma pasta de trabalho, o Visual Studio cria automaticamente vários objetos e os adiciona ao seu projeto. Esses objetos não devem ser excluídos usando ferramentas do Visual Studio, pois são gerenciados pelo Excel. Para excluí-los, remova os elementos mapeados da planilha ou desanexe o esquema usando ferramentas do Excel.

Há dois objetos principais:

  • Esquema XML (arquivo XSD). Para cada esquema na pasta de trabalho, o Visual Studio adiciona um esquema ao projeto. Isso aparece como um item de projeto com uma extensão XSD no Gerenciador de Soluções.

  • Uma classe tipada DataSet . Essa classe é criada com base no esquema. Essa classe de conjunto de dados é visível no Modo de Exibição de Classe.

Objetos criados quando elementos de esquema são mapeados para planilhas do Excel

Quando você mapeia um elemento de esquema do painel de tarefas de Origem XML para uma planilha, o Visual Studio cria automaticamente vários objetos e os adiciona ao seu projeto:

  • Controles. Para cada objeto mapeado na pasta de trabalho, um XmlMappedRange controle (para elementos de esquema não repetidos) ou um ListObject controle (para elementos de esquema repetidos) é criado no modelo de programação. O ListObject controle só pode ser excluído excluindo os mapeamentos e os objetos mapeados da pasta de trabalho. Para obter mais informações sobre controles, consulte Visão geral de itens de host e controles de host.

  • BindingSource. Quando você cria um XmlMappedRange mapeando um elemento de esquema não recorrente para a planilha, um BindingSource é criado e o controle XmlMappedRange está associado ao BindingSource. Você deve associar o BindingSource a uma instância da fonte de dados que corresponda ao esquema mapeado para o documento, como uma instância da classe tipada DataSet que foi criada. Crie a vinculação definindo as propriedades DataSource e DataMember, que são expostas na janela Propriedades.

    Observação

    O BindingSource não é criado para objetos ListObject. Você deve associar manualmente a ListObject à fonte de dados, configurando as propriedades DataSource e DataMember na janela Propriedades.

Esquemas mapeados do Office e a janela Fontes de Dados do Visual Studio

A funcionalidade de esquema mapeada do Office e a janela Fontes de Dados do Visual Studio podem ajudá-lo a apresentar dados em uma planilha do Excel para relatórios ou edição. Em ambos os casos, você pode arrastar elementos de dados para a planilha do Excel. Ambos os métodos criam controles associados a dados através de uma BindingSource a uma fonte de dados, como um DataSet ou um serviço Web.

Observação

Quando você mapeia um elemento de esquema repetido para uma planilha, o Visual Studio cria um ListObject. O ListObject não está automaticamente associado aos dados por meio do BindingSource. Você deve associar manualmente o ListObject à fonte de dados definindo as propriedades DataSource e DataMember na janela Propriedades.

A tabela a seguir mostra algumas das diferenças entre os dois métodos.

esquema XML Janela Fontes de Dados
Usa a interface do Office. Usa a janela Fontes de Dados no Visual Studio.
Habilita os recursos internos do Office para importar e exportar dados de arquivos XML. Você deve fornecer a funcionalidade de importação e exportação programaticamente.
Você deve escrever código para preencher os controles gerados com dados. Os controles adicionados da janela Fontes de Dados têm o código gerado automaticamente para preenchê-los, juntamente com as cadeias de conexão necessárias ao usar servidores de banco de dados.

Comportamento quando esquemas são anexados a documentos do Word

Os objetos de dados não são criados quando você anexa um esquema a um documento do Word que é usado em um projeto do Office no nível do documento. No entanto, quando você mapeia um elemento de esquema para o documento, os controles são criados. O tipo de controle depende do tipo de elemento que você mapeia; elementos repetitivos geram XMLNodes controles e elementos que não se repetem geram XMLNode controles. Para obter mais informações, consulte Controle XMLNodes e controle XMLNode.

Implantação de soluções que incluem esquemas XML

Você deve criar um instalador para implantar uma solução que usa um esquema XML mapeado para um documento. O instalador deve registrar o esquema na biblioteca de esquemas no computador do usuário. Se você não registrar o esquema, a solução ainda funcionará porque o Word gerará um esquema temporário com base nos elementos que estão no documento quando o usuário o abrir. No entanto, o usuário não poderá executar a validação ou salvar o esquema que foi usado para criar o projeto. Para obter mais informações sobre instaladores, consulte Implantar aplicativos, serviços e componentes.

Você também pode adicionar código ao projeto para verificar se o esquema está na biblioteca e registrado. Se não estiver, você poderá avisar o usuário.

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