Pregunta

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

saluda

Sebastian

¿Fue útil?

Solución

Los nuevos formatos de oficina (docx, xlsx, etc.) son archivos zip que contienen una colección de archivos xml. Teniendo esto en cuenta, tiene un par de enfoques.

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

  2. Puedes descomprimir el archivo docx, hacer una búsqueda y reemplazar tus tokens y volver a comprimirlos.

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

Otros consejos

Eric White ha abordado exactamente este tema en un artículo del blog que detalla un programa destinado a validar fragmentos de código fuente incrustados en archivos DocX . Más allá de ese artículo, recomiendo encarecidamente leer su serie en Office Open XML y C # .

He usado este:

IEnumerable test2 = from element in body.Elements ()              donde element.InnerText.Contains (" sdt ")              seleccionar elemento;

Por cierto, utilizando xml, encontré esta solución que encuentra 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 ¿el SDK 2.0 del formato XML abierto no me da ninguna posibilidad para esto?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top