Demonstra Passo a passo: Controles de conteúdo ligação Personalizar XML Parts
Se aplica a |
---|
As informações contidas neste tópico se aplicam apenas às especificado Ferramentas do Visual Studio para o Office projetos e as versões do Microsoft Office. Tipo de Projeto
Versão do Microsoft Office
For more information, see Recursos disponíveis pelo aplicativo e o tipo de projeto. |
Esta explicação passo a passo demonstra como Ligar controles de conteúdo em uma personalização de nível de documento do Word 2007 a dados XML que são armazenadas no documento.
Word 2007 permite que você armazene dados XML, chamados Personalizar XML partes, em um documento.Você pode controlar a Exibir desse dados vinculando controles de conteúdo a elementos em uma parte XML Personalizar.O documento de exemplo nesta explicação passo a passo exibe informações do funcionário que são armazenadas em uma parte XML Personalizar.Quando você abre o documento, o conteúdo controla Exibir os valores dos elementos XML.Todas as alterações feitas nos controles de conteúdo texto são salvas na parte XML Personalizar.
Essa explicação passo a passo ilustra as seguintes tarefas:
Adicionar controles de conteúdo para o documento do Word em um projeto de nível de documento no tempo de design.
Criando um arquivo de dados XML e um esquema XML que define os elementos para se ligarem os controles de conteúdo.
Anexar o esquema XML para o documento em tempo de design.
Adicionar o conteúdo do arquivo XML a uma parte XML Personalizar no documento em tempo de execução.
Vincular os controles de conteúdo aos elementos a parte XML Personalizar.
Vinculando um DropDownListContentControl a um conjunto de valores que são definidos no esquema XML.
Observação: |
---|
Seu computador pode mostrar diferentes nomes ou localizações para alguns dos elementos de interface do usuário do Visual Studio nas instruções a seguir. A edição do Visual Studio que você possui e as configurações que você usa determinam esses elementos. Para obter mais informações, consulte Configurações do Visual Studio. |
Pré-requisitos
Para completar este passo a passo, são necessários os seguintes componentes:
Ferramentas do Visual Studio para o Office (um componente opcional do O Visual Studio 2008 Professional e Visual Studio Team System).
Microsoft Office Word 2007.
Ferramentas do Visual Studio para o Office é instalado por padrão com as versões listadas do Visual Studio.Para Marcar se ele está instalado, Marcar Instalando o Visual Studio Tools para Office.
Criando um novo projeto de documento do Word
Criar um documento do Word 2007 que você usará na explicação passo a passo.
Para criar um novo projeto de documento do Word 2007
Criar um projeto de documento do Word com o nome EmployeeControls, usando o documento do Word Modelo de projeto para o Microsoft Office Sistema de 2007.Criar um novo documento para a solução.For more information, see Como: Criar o Visual Studio Tools para projetos do Office.
Visual Studio abre o novo documento do Word no designer e o adiciona o projeto EmployeeControls Gerenciador de Soluções.
Adicionando controles de conteúdo para o documento
Criar uma tabela que contém três tipos diferentes de controles de conteúdo onde o usuário pode exibir ou editar informações sobre um funcionário.
Para adicionar controles de conteúdo ao documento
No documento do Word que está hospedado no designer Visual Studio , na faixa de opções, clique na guia de De inserir.
No AAgruparar tabelas, clique em Tabela; inserir uma tabela com colunas de 2 e 3 linhas.
tipo texto na Primeiro coluna para que ele é semelhante a coluna a seguir:
Nome do funcionário
Data de contratação
Title
In the segundo coluna da tabela, clique na Primeiro linha (Avançar ao Nome do funcionário).
Na faixa de opções, clique na guia de De desenvolvedor.
Observação: Se a Guia do desenvolvedor não estiver visível, você primeiro deve mostrá-lo.For more information, see Como: Mostrar a guia Desenvolvedor na Faixa de Opções.
No AAgruparar de De controles, clique em Texto botão para adicionar um PlainTextContentControl à Primeiro célula.
Na segunda coluna da tabela, clique na segunda linha (Avançar para Data de contratação).
No AAgruparar de De controles de , clique em Selecionador de data botão para adicionar um DatePickerContentControl para o segundo célula.
In the segundo coluna da tabela, clique na terceira linha (Avançar ao Título).
No AAgruparar controles, clique em Soltar - Para Baixo lista botão para adicionar um DropDownListContentControl para Último célula.
Que é a interface de usuário inteira para este projeto.Se você executar o projeto agora, você pode digitar texto na Primeiro linha e Selecionar uma data in the segundo linha.A Avançar etapa é anexar os dados que você deseja exibir para o documento em um arquivo XML.
Criando o arquivo de dados XML
Normalmente, você obterá dados XML para armazenar em uma parte XML Personalizar de um Externo Origem, como um arquivo ou um banco de dados.Esta explicação passo a passo, você criar um arquivo XML que contém os dados funcionário, marcados por elementos que você irá Ligar para os controles de conteúdo no documento.Para disponibilizar os dados em tempo de execução, incorporar o arquivo XML como um recurso no assembly de personalização.
Para criar o arquivo de dados
No menu Project, clique em Add New Item.
O Adicionar Novo Item caixa de diálogo é exibida.
No painel modelos, Selecionar do arquivo XML.
Nomeie o arquivo employees.xmle clique em Adicionar.
O arquivo de de employees.xml abre no editor de códigos.
Substituir o conteúdo do arquivo employees.xml com o seguinte texto.
<?xml version="1.0" encoding="utf-8" ?> <employees xmlns="https://schemas.microsoft.com/vsto/samples"> <employee> <name>Karina Leal</name> <hireDate>1999-04-01</hireDate> <title>Manager</title> </employee> </employees>
Em Gerenciador de Soluções, clique em employees.xml.
Na janela Propriedades , Selecionar a propriedade de ComCompilação Ação, e, em seguida, Alterar o valor a ser Embedded recurso.
Esta etapa incorpora o arquivo XML como um recurso no assembly quando você Compilação o projeto.Isso permite que você acessar o conteúdo do arquivo XML em tempo de execução.
Criação de um esquema XML
Se você desejar ligar um Controlarar de conteúdo a um Simples elemento em uma parte XML Personalizar, você não precisará usar um esquema XML.No entanto, para Ligar a DropDownListContentControl a um conjunto de valores, você deve criar um esquema XML que valida o arquivo de dados XML que você criou anteriormente.O esquema XML define os valores possíveis para o elemento title.Você irá Ligar o DropDownListContentControl a esse elemento posteriormente nesta explicação passo a passo.
Para criar um esquema XML
No menu Project, clique em Add New Item.
O Adicionar Novo Item caixa de diálogo é exibida.
No painel modelos, Selecionar Esquema XML.
Nomeie o esquema employees.xsd e clique em Adicionar.
O designer de esquema é aberto.
Em Gerenciador de Soluções, clique com o botão direito do mouse employees.xsde clique em Exibir Code.
Substituir o conteúdo do arquivo employees.xsd com o seguinte esquema.
<?xml version="1.0" encoding="utf-8" ?> <xs:schema xmlns="https://schemas.microsoft.com/vsto/samples" targetNamespace="https://schemas.microsoft.com/vsto/samples" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="employees" type="EmployeesType"></xs:element> <xs:complexType name="EmployeesType"> <xs:all> <xs:element name="employee" type="EmployeeType"/> </xs:all> </xs:complexType> <xs:complexType name="EmployeeType"> <xs:sequence> <xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="1"/> <xs:element name="hireDate" type="xs:date" minOccurs="1" maxOccurs="1"/> <xs:element name="title" type="TitleType" minOccurs="1" maxOccurs="1"/> </xs:sequence> </xs:complexType> <xs:simpleType name="TitleType"> <xs:restriction base="xs:string"> <xs:enumeration value ="Engineer"/> <xs:enumeration value ="Designer"/> <xs:enumeration value ="Manager"/> </xs:restriction> </xs:simpleType> </xs:schema>
No menu arquivo, clique em Salvar tudo para salvar as alterações na de employees.xml e os arquivos de employees.xsd.
Anexar o esquema XML ao documento
Você deve anexar o esquema XML ao documento para ligar os valores válidos de um elemento DropDownListContentControl a title.
Para anexar o esquema XML a do documento
Ativar EmployeeControls.docx no designer.
Na faixa de opções, clique na guia de De desenvolvedor.
No AAgruparar de De XML, clique em Esquema.
Na caixa de diálogo do Add-ins E Modelos, clique na guia de esquema XML e clique em Adicionar esquema.
Procurar ao employees.xsd esquema criado anteriormente, que está localizado no seu Diretório do Projeto e clique em Abrir.
Clique em OK na caixa de diálogo Definições de esquema.
Clique em OK para fechar a Modelos e a caixa de diálogo de Adicionar-ins.
O painel de tarefas de estrutura XML é aberto.
Fechar o painel de tarefas de estrutura XML.
Adicionar uma Part XML de Personalizar para o documento
Antes de você pode Ligar os controles de conteúdo para os elementos no arquivo XML, você deve adicionar o conteúdo do arquivo XML a uma parte XML Personalizar e Novo no documento.
Para adicionar uma parte XML Personalizar o documento
Em Gerenciador de Soluções, clique com o botão direito do mouse ThisDocument.cs ou ThisDocument.vbe clique em Exibir Code.
Adicionar as seguintes declarações para a classe ThisDocument.Esse código declara vários objetos que você serão usados para adicionar uma parte XML Personalizar ao documento.
<Cached()> _ Public employeeXMLPartID As String = String.Empty Private employeeXMLPart As Office.CustomXMLPart Private Const prefix As String = "xmlns:ns='https://schemas.microsoft.com/vsto/samples'"
[CachedAttribute()] public string employeeXMLPartID = string.Empty; private Office.CustomXMLPart employeeXMLPart; private const string prefix = "xmlns:ns='https://schemas.microsoft.com/vsto/samples'";
Adicionar o seguinte método à classe ThisDocument.Esse método obtém o conteúdo do arquivo de dados XML que é incorporado como um recurso no assembly e retorna o conteúdo como uma cadeia de caracteres XML.
Private Function GetXmlFromResource() As String Dim asm As System.Reflection.Assembly = _ System.Reflection.Assembly.GetExecutingAssembly() Dim stream1 As System.IO.Stream = asm.GetManifestResourceStream( _ "EmployeeControls.employees.xml") Using resourceReader As System.IO.StreamReader = _ New System.IO.StreamReader(stream1) If resourceReader IsNot Nothing Then Return resourceReader.ReadToEnd() End If End Using Return Nothing End Function
private string GetXmlFromResource() { System.Reflection.Assembly asm = System.Reflection.Assembly.GetExecutingAssembly(); System.IO.Stream stream1 = asm.GetManifestResourceStream( "EmployeeControls.employees.xml"); using (System.IO.StreamReader resourceReader = new System.IO.StreamReader(stream1)) { if (resourceReader != null) { return resourceReader.ReadToEnd(); } } return null; }
Adicionar o seguinte método à classe ThisDocument.O método AddCustomXmlPart cria uma parte XML Personalizar Novo que contém uma Cadeia de Caracteres XML que é passada para o método.
Para garantir que a parte XML Personalizar é criado apenas uma vez, o método cria o XML Personalizar parte somente se uma parte XML Personalizar com um GUID correspondente ainda não existe no documento.A Primeiro vez que esse método é chamado, ele salva o valor da propriedade Microsoft.Office.Interop.Word.CustomXMLPart.Id à cadeia de caracteres employeeXMLPartID.O valor da Cadeia de Caracteres employeeXMLPartID é mantido no documento porque ele foi declarado usando o atributo CachedAttribute.
Private Sub AddCustomXmlPart(ByVal xmlData As String) If xmlData IsNot Nothing Then employeeXMLPart = Me.CustomXMLParts.SelectByID(employeeXMLPartID) If (employeeXMLPart Is Nothing) Then employeeXMLPart = Me.CustomXMLParts.Add(xmlData) employeeXMLPart.NamespaceManager.AddNamespace("ns", _ "https://schemas.microsoft.com/vsto/samples") employeeXMLPartID = employeeXMLPart.Id End If End If End Sub
private void AddCustomXmlPart(string xmlData) { if (xmlData != null) { employeeXMLPart = this.CustomXMLParts.SelectByID(employeeXMLPartID); if (employeeXMLPart == null) { employeeXMLPart = this.CustomXMLParts.Add(xmlData, missing); employeeXMLPart.NamespaceManager.AddNamespace("ns", @"https://schemas.microsoft.com/vsto/samples"); employeeXMLPartID = employeeXMLPart.Id; } } }
Vinculando os controles de conteúdo a elementos em Part de XML Personalizar
Ligar Cada Controlarar de conteúdo a um elemento na parte XML Personalizar usando a propriedade XMLMapping de cada Controlarar de conteúdo.
Para Ligar os controles de conteúdo a elementos na parte XML Personalizar
Adicionar o seguinte método à classe ThisDocument.Este método vincula cada Controlarar de conteúdo a um elemento na parte XML Personalizar e define o Formatarar de Exibir de data do DatePickerContentControl.
Private Sub BindControlsToCustomXmlPart() Dim xPathName As String = "ns:employees/ns:employee/ns:name" Me.PlainTextContentControl1.XMLMapping.SetMapping(xPathName, _ prefix, employeeXMLPart) Dim xPathDate As String = "ns:employees/ns:employee/ns:hireDate" Me.DatePickerContentControl1.DateDisplayFormat = "MMMM d, yyyy" Me.DatePickerContentControl1.XMLMapping.SetMapping(xPathDate, _ prefix, employeeXMLPart) Dim xPathTitle As String = "ns:employees/ns:employee/ns:title" Me.DropDownListContentControl1.XMLMapping.SetMapping(xPathTitle, _ prefix, employeeXMLPart) End Sub
private void BindControlsToCustomXmlPart() { string xPathName = "ns:employees/ns:employee/ns:name"; this.plainTextContentControl1.XMLMapping.SetMapping(xPathName, prefix, employeeXMLPart); string xPathDate = "ns:employees/ns:employee/ns:hireDate"; this.datePickerContentControl1.DateDisplayFormat = "MMMM d, yyyy"; this.datePickerContentControl1.XMLMapping.SetMapping(xPathDate, prefix, employeeXMLPart); string xPathTitle = "ns:employees/ns:employee/ns:title"; this.dropDownListContentControl1.XMLMapping.SetMapping(xPathTitle, prefix, employeeXMLPart); }
Executando O código quando o documento é aberto
Criar a parte XML Personalizar e Ligar os controles Personalizars para os dados quando o documento for aberto.
Para executar seu código quando o documento é aberto
Adicionar o seguinte código para o método ThisDocument_Startup da classe ThisDocument.Esse código obtém a cadeia de caracteres de XML do arquivo employees.xml, adiciona a cadeia de caracteres de XML a uma Novo parte XML Personalizar no documento e vincula os controles de conteúdo a elementos na parte XML Personalizar.
Dim xmlData As String = GetXmlFromResource() If xmlData IsNot Nothing Then AddCustomXmlPart(xmlData) BindControlsToCustomXmlPart() End If
string xmlData = GetXmlFromResource(); if (xmlData != null) { AddCustomXmlPart(xmlData); BindControlsToCustomXmlPart(); }
Testar o projeto.
Quando você Abrir o documento, o conteúdo controla os dados de Exibir de elementos da parte XML Personalizar.Você pode Clique o DropDownListContentControl para selecionar um dos três valores válidos para o elemento de title , que são definidos no arquivo employees.xsd.Se você editar os dados em qualquer um dos controles de conteúdo, os novos valores serão salvos na parte XML Personalizar no documento.
Para testar os controles de conteúdo
Pressione F5 para executar o projeto.
Verifique se que a tabela do documento se assemelha a tabela a seguir.Cada uma das cadeias de caracteres no segundo coluna é obtida de um elemento na parte XML Personalizar no documento.
Nome do funcionário
Karina Leal
Data de contratação
01.04.99
Title
Gerente
Clique na célula Direito da célula de nome do funcionário e tipo um nome diferente.
Clique na célula Direito da célula Data de contratação e Selecionar uma data diferente no selecionador de data.
Clique na célula para a Direito da célula título e Selecionar um novo item de a lista Soltar-Para Baixo.
Salvar e Fechar o documento.
No Windows Explorer, Abrir a pasta \bin\Depurar no local do projeto.
Clique com o botão direito do mouse EmployeeControls.docx e clique em Renomear.
O nome do arquivo EmployeeControls.docx.zip.
O documento EmployeeControls.docx é salvo no Abrir XML Formatar.Renomeando este documento com a extensão de Nome do Arquivo .zip, você pode examinar o conteúdo do documento.Para obter mais informações sobre Abrir XML, consulte o artigo técnico apresentando o XML de Abrir formatos de arquivo.
Clique Duplo no arquivo EmployeeControls.docx.zip.
Clique Duplo na pasta de customXml.
Clique com o botão direito do mouse item2.xml e clique em Abrir do .
Este arquivo contém Personalizar parte XML que você Adicionado ao documento.
Verifique se a name, hireDatee title elementos contêm os novos valores que você inseridos em controles de conteúdo no documento.
Fechar o arquivo de item2.xml.
Próximas etapas
Você pode saber mais sobre como usar controles de conteúdo destes tópicos:
Use Tudo controles de conteúdo disponíveis para criar um modelo.For more information, see Demonstra Passo a passo: Criando um modelo usando controles de conteúdo.
Modificar os dados em partes XML Personalizars enquanto o documento é Fechada.Na Avançar vez que o usuário abre o documento, os controles de conteúdo que são Ligados aos elementos XML exibirá os novos dados.For more information, see Como: Adicionar Parts XML de Personalizars a documentos sem iniciar o Microsoft Office.
Use controles de conteúdo para proteger as partes de um documento.For more information, see Como: Proteger partes de documentos, usando controles de conteúdo.
Consulte também
Tarefas
Como: Adicionar controles de conteúdo a documentos do Word
Como: Proteger partes de documentos, usando controles de conteúdo
Conceitos
Itens de host e Visão geral sobre controles de host
Limitações através de programação de itens de host e controles de host
Adicionar controles a documentos do Office em tempo de execução
Métodos de auxiliar para controles de host