2008-10-08 41 views
6

Tengo una plantilla en formato de palabra (.docx) y quiero reemplazar algunos marcadores de posición en esta plantilla con mis propios datos, ¿sabe dónde puedo encontrar las clases correctas para este proyecto? Sería bueno para mí saber el espacio de nombres. ¿Existen clases más nuevas para manejar documentos de Word en formato docx (xml) que las clases com? Gracias por todas sus respuestas, espero que alguien pueda ayudarme con mi problema.Reemplazar marcadores de posición en documento Word con C#

saluda

Sebastián

Respuesta

5

Los nuevos formatos de oficina (docx, xlsx, etc) son archivos zip que contienen una colección de archivos XML. Con eso en mente, tienes un par de enfoques.

  1. Puede utilizar el SDK de Open XML ubicado en http://www.microsoft.com/downloads/details.aspx?FamilyId=AD0B72FB-4A1D-4C52-BDB5-7DD7E816D046&displaylang=en

  2. Puede descomprimir el archivo docx, hacer una búsqueda y reemplazo para sus fichas y código postal una copia de seguridad.

Hay un sitio web en openxmldeveloper.org que es justo para este tipo de cosas. Además, tenga en cuenta que ya están enviando una versión beta 2 del SDK.

+2

FYI, v2.0 del Open XML SDK ya está disponible aquí: http://www.microsoft.com/downloads/details.aspx?FamilyId=C6E744E5-36E9-45F5-8D8C-331DF206E0D0&displaylang=en –

0

Por cierto usando XML encontré esta solución que busca todos los nodos SDT-

NameTable nt = new NameTable(); 
     XmlNamespaceManager nsManager = new XmlNamespaceManager(nt); 
     nsManager.AddNamespace("w", wordmlNamespace); 

     XmlDocument xDoc = new XmlDocument(); 
     xDoc.Load(doc.MainDocumentPart.GetStream()); 

     XmlNodeList nodeList = xDoc.SelectNodes(@"./w:document/w:body//w:sdt", nsManager); 

funciona pero no el formato Open XML SDK 2.0 dame alguna posibilidad para esto?

1

I utilizarse ésta:

test2 IEnumerable = desde el elemento en body.Elements() donde element.InnerText.Contains ("SDT") seleccione elemento;

Cuestiones relacionadas