Compartilhar via


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

Importante As informações estabelecidas neste tópico sobre o Microsoft Word são apresentadas exclusivamente para o benefício e uso de indivíduos e organizações localizados fora dos Estados Unidos e seus territórios ou que estão usando, ou desenvolvendo programas que são executados em, 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 não podem ser lidas ou usadas por indivíduos ou organizações nos Estados Unidos ou em seus territórios que estejam usando ou desenvolvendo programas executados em produtos do Microsoft Word 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 Recursos disponíveis por aplicativo e tipo de projeto do Office.

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 exportação de dados XML dentro e fora do documento.

O Visual Studio expõe elementos de esquema mapeados em personalizações em nível de documento como controles no modelo de programação. Para o Excel, o Visual Studio adiciona suporte para vincular 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 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, porque eles são gerenciados pelo Excel. Para excluí-los, remova os elementos mapeados da planilha ou desanexe o esquema usando as ferramentas do Excel.

Existem 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 digitada 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 Código-fonte 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 controle (para elementos de esquema não repetitivos) ou um XmlMappedRange ListObject controle (para elementos de esquema repetitivos) é criado no modelo de programação. O ListObject controle pode ser excluído somente excluindo os mapeamentos e os objetos mapeados da pasta de trabalho. Para obter mais informações sobre controles, consulte Visão geral sobre itens de host e controles de host.

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

    Observação

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

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

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

Observação

Quando você mapeia um elemento de esquema repetitivo para uma planilha, o Visual Studio cria um ListObjectarquivo . O ListObject não é vinculado automaticamente aos dados por meio do BindingSource. Você deve vincular manualmente o ListObject à fonte de dados definindo as DataSource propriedades 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 código gerado automaticamente para preenchê-los, juntamente com as cadeias de conexão necessárias quando você usa servidores de banco de dados.

Comportamento quando esquemas são anexados a documentos do Word

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 em nível de 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 mapeado; Elementos repetitivos geram controles e elementos não repetitivos geram XMLNodes 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 gera um esquema temporário com base nos elementos que estão no documento quando o usuário o abre. 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 seu projeto para verificar se o esquema está na biblioteca e registrado. Se não estiver, você pode 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;
}