Compartilhar via


Como: Adicionar Parts XML de Personalizars a documentos sem iniciar o Microsoft Office

Se aplica a

As informações contidas neste tópico se aplica apenas às versões especificadas do Microsoft Office.

Versão do Microsoft Office

  • O Excel 2007

  • PowerPoint 2007

  • Word 2007

For more information, see Recursos disponíveis pelo aplicativo e o tipo de projeto.

Você pode adicionar uma parte XML Personalizar a um documento sem iniciar o Microsoft Office Excel, Microsoft Office PowerPoint ou Microsoft Office Word.Isso é útil se você deseja armazenar dados XML em um documento em um computador que não tem o Microsoft Office instaladas, como um servidor.For more information, see Visão geral de Parts XML Personalizar.

O documento deve estar em um dos formatos, como .docx, .xlsx e .pptx Abrir XML.Não é possível acessar partes XML Personalizars nos formatos de arquivo binário sem iniciar o aplicativo Microsoft Office.

Para adicionar uma parte XML Personalizar sem iniciar o Microsoft Office, use a Package e classes de PackagePart.Para obter mais informações sobre essas classes, consulte Documentos em Windows Presentation Foundation.

Para adicionar uma parte XML Personalizar a um documento sem iniciar o Microsoft Office

  1. Criar um objeto de XmlDocument que representa o XML que você deseja adicionar a uma parte XML Personalizar.

    Dim xmlString As String = _
        "<?xml version=""1.0"" encoding=""utf-8"" ?>" & _
            "<employees https://schemas.microsoft.com/vsto/samples"">" & _
                "<employee>" & _
                    "<name>Karina Leal</name>" & _
                    "<hireDate>1999-04-01</hireDate>" & _
                    "<title>Manager</title>" & _
                "</employee>" & _
            "</employees>"
    
    Dim reader As StringReader = New StringReader(xmlString)
    Dim xmlDoc As XmlDocument = New XmlDocument()
    xmlDoc.Load(reader)
    
    string xmlString =
        "<?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>";
    
    StringReader reader = new StringReader(xmlString);
    XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.Load(reader);
    
  2. Criar um novo PackagePart que representa a parte XML Personalizar que você está adicionando ao documento.Em seguida, Salvar o XML de o objeto de XmlDocument criado anteriormente para a Novo parte XML Personalizar.

    Using package As Package = package.Open(fullDocumentPath, FileMode.Open, _
        FileAccess.ReadWrite)
        Dim uriPartTarget As Uri = New Uri("/customXml/employee1.xml", UriKind.Relative)
        If Not package.PartExists(uriPartTarget) Then
            Dim customXml As PackagePart = package.CreatePart(uriPartTarget, _
                "application/vnd.openxmlformats-officedocument.customXmlProperties+xml")
            Using partStream As Stream = customXml.GetStream(FileMode.Create, _
                FileAccess.ReadWrite)
                xmlDoc.Save(partStream)
            End Using
        End If
    End Using
    
    using (Package package = Package.Open(fullDocumentPath, FileMode.Open,
        FileAccess.ReadWrite))
    {
        Uri uriPartTarget = new Uri("/customXml/employee1.xml", UriKind.Relative);
    
        if (!package.PartExists(uriPartTarget))
        {
            PackagePart customXml = package.CreatePart(uriPartTarget,
                "application/vnd.openxmlformats-officedocument.customXmlProperties+xml");
    
            using (Stream partStream = customXml.GetStream(FileMode.Create,
                FileAccess.ReadWrite))
            {
                xmlDoc.Save(partStream);
            }
        }
    }
    

Exemplo

O exemplo de código a seguir adiciona uma parte XML Personalizar a um documento do Word chamado Employees.docx está localizado na pasta Documents %UserProfile%\My (para o Windows XP e anteriormente) ou a pasta %UserProfile%\Documents (para Windows Vista).

Este exemplo deve ser usado em um Aplicativo do Console, mas você pode modificá-lo funcionar em qualquer aplicativo que funciona com o .NET Framework 3.0 ou posterior, como um aplicativo do Windows Presentation Foundation (WPF).

Para modificar este exemplo funcione com um documento do Excel ou PowerPoint, modifique o método Main para passar no caminho completo do documento para o método AddCustomXmlPart.

Sub Main()
    AddCustomXmlPart(Environment.GetFolderPath( _
        Environment.SpecialFolder.MyDocuments) & "\Employees.docx")
End Sub

Private Sub AddCustomXmlPart(ByVal fullDocumentPath As String)
    Dim xmlDoc As XmlDocument = GetXmlDocumentFromString()

    If xmlDoc IsNot Nothing Then
        Using package As Package = package.Open(fullDocumentPath, FileMode.Open, _
            FileAccess.ReadWrite)
            Dim uriPartTarget As Uri = New Uri("/customXml/employee1.xml", UriKind.Relative)
            If Not package.PartExists(uriPartTarget) Then
                Dim customXml As PackagePart = package.CreatePart(uriPartTarget, _
                    "application/vnd.openxmlformats-officedocument.customXmlProperties+xml")
                Using partStream As Stream = customXml.GetStream(FileMode.Create, _
                    FileAccess.ReadWrite)
                    xmlDoc.Save(partStream)
                End Using
            End If
        End Using
    End If
End Sub

Private Function GetXmlDocumentFromString() As XmlDocument
    Dim xmlString As String = _
        "<?xml version=""1.0"" encoding=""utf-8"" ?>" & _
            "<employees https://schemas.microsoft.com/vsto/samples"">" & _
                "<employee>" & _
                    "<name>Karina Leal</name>" & _
                    "<hireDate>1999-04-01</hireDate>" & _
                    "<title>Manager</title>" & _
                "</employee>" & _
            "</employees>"

    Dim reader As StringReader = New StringReader(xmlString)
    Dim xmlDoc As XmlDocument = New XmlDocument()
    xmlDoc.Load(reader)
    Return xmlDoc
End Function
static void Main(string[] args)
{
    AddCustomXmlPart(Environment.GetFolderPath(
        Environment.SpecialFolder.MyDocuments) + @"\Employees.docx");
}

private static void AddCustomXmlPart(string fullDocumentPath)
{
    XmlDocument xmlDoc = GetXmlDocumentFromString();

    if (xmlDoc != null)
    {
        using (Package package = Package.Open(fullDocumentPath, FileMode.Open,
            FileAccess.ReadWrite))
        {
            Uri uriPartTarget = new Uri("/customXml/employee1.xml", UriKind.Relative);

            if (!package.PartExists(uriPartTarget))
            {
                PackagePart customXml = package.CreatePart(uriPartTarget,
                    "application/vnd.openxmlformats-officedocument.customXmlProperties+xml");

                using (Stream partStream = customXml.GetStream(FileMode.Create,
                    FileAccess.ReadWrite))
                {
                    xmlDoc.Save(partStream);
                }
            }
        }
    }
}

private static XmlDocument GetXmlDocumentFromString()
{
    string xmlString =
        "<?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>";

    StringReader reader = new StringReader(xmlString);
    XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.Load(reader);
    return xmlDoc;
}

Compilando o código

  • Este exemplo requer uma referência ao assembly WindowsBase.dll.Este assembly está incluído no .NET Framework, começando com a versão 3.0.

  • Este exemplo pressupõe que você tenha using (para C#) ou declarações de Imports (para o Visual Basic) para os seguintes namespaces:

    • System.IO

    • System.IO.Packaging

    • System.Xml

Consulte também

Tarefas

Como: Adicionar Parts XML personalizado a personalizações de nível de documento

Como: Adicionar Parts XML de Personalizars a documentos usando suplementos de nível de aplicativo

Conceitos

Visão geral de Parts XML Personalizar