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
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
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);
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